class BaseDaoImpl implements Dao<T, ID> {

	@Override
	public int deleteIds(Collection<ID> ids) throws SQLException {
		checkForInitialized();
		// ignore deleting a null object
		if (ids == null || ids.isEmpty()) {
			return 0;
		} else {
			DatabaseConnection connection = connectionSource.getReadWriteConnection(tableInfo.getTableName());
			try {
				return statementExecutor.deleteIds(connection, ids, objectCache);
			} finally {
				connectionSource.releaseConnection(connection);
			}
		}
	}

	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);

}