class BaseDaoImpl implements Dao<T, ID> {

	@Override
	public ID extractId(T data) throws SQLException {
		checkForInitialized();
		FieldType idField = tableInfo.getIdField();
		if (idField == null) {
			throw new SQLException("Class " + dataClass + " does not have an id field");
		}
		@SuppressWarnings("unchecked")
		ID id = (ID) idField.extractJavaFieldValue(data);
		return id;
	}

	protected  BaseDaoImpl(Class<T> dataClass);
	protected  BaseDaoImpl(ConnectionSource connectionSource, Class<T> dataClass);
	protected  BaseDaoImpl(ConnectionSource connectionSource, DatabaseTableConfig<T> tableConfig);
	private  BaseDaoImpl(ConnectionSource connectionSource, Class<T> dataClass, DatabaseTableConfig<T> tableConfig);

}