protected List<T> executeQuery(String sql) throws SQLException{
		List<T> returnList = new ArrayList<T>();
		Connection connection= null;
		Statement statement= null;
		ResultSet rs= null;

		try{
			connection = getConnection();
			statement = connection.createStatement();
			rs = statement.executeQuery(sql);

			while(rs.next()){
				T entity = this.retrieveEntity(rs);
				returnList.add(entity);
			}
		}finally{
			if(rs != null) rs.close();
			if (statement != null) statement.close();
			if (connection != null) connection.close();
		}

		return returnList;
	}