public void delete(Object obj) {
		StringBuilder sb = new StringBuilder();
		sb.append("delete from " + obj.getClass().getSimpleName() + " where ");

		PreparedStatement stmt = null;
		Connection connection = null;
		try {
			connection = DB.getConnection();
			String primaryKey = null;
			for (Field field : obj.getClass().getDeclaredFields()) {
				Annotation[] annotation = field.getDeclaredAnnotations();
				if (Id.class.equals(annotation[0].annotationType())) {
					primaryKey = field.getName();
					break;
				}
			}
			sb.append(primaryKey).append(" = ?");
			String getterName = "get"
					+ primaryKey.substring(0, 1).toUpperCase()
					+ primaryKey.substring(1);
			Method getter = obj.getClass().getMethod(getterName);
			Object value = getter.invoke(obj);
			stmt = connection.prepareStatement(sb.toString());
			stmt.setInt(1, (Integer) value);
			stmt.executeUpdate();
		} catch (Exception e) {
			throw new ExcuteQueryException(e);
		} finally {
			DbUtils.closeQuietly(stmt);
		}

	}