DAO i Hibernate

Klasa palio.connectors.hibernate.GenericHibernateDAO pozwala na łatwe tworzenie obiektów DAO (Data Access Object) przy użyciu Hibernate.

Skrócona definicja klasy:

public abstract class GenericHibernateDAO<T, ID extends Serializable> implements GenericDAO<T, ID> {
  public T getById(ID id, boolean lock)
  public T getById(ID id, boolean lock)
  public List<T> getAll()
  public List<T> getByExample(T exampleInstance, String... excludeProperty)
  public T persist(T entity)
  public boolean remove(T entity)
  protected List<T> findByCriteria(Collection<Criterion> criterion)
  protected List<T> findByCriteria(Collection<Criterion> criterion, String orderColumn, boolean ascOrder, Integer offset, Integer count)
  protected Session getSession()
}


Aby stworzyć klasę DAO dla konkretnego obiektu należy stworzyć nową klasę dziedziczącą po klasie GenericHibernateDAO.

Przykładowa implementacja:

package palio.dao;
 
import palio.*;
import palio.model.*;
import palio.connectors.hibernate.*;
 
public class PUserDAO extends GenericHibernateDAO<PUser, Long> {
 
    private static final String CONNECTOR_NAME = "connector_name"
 
    public static PUserDAO getInstance() throws PalioException {
        PUserDAO dao = new PUserDAO();
        dao.setSession(Groovy.module("hibernate").getCurrentSession(CONNECTOR_NAME));
        return dao;
    }
 
}


Przykładowe użycie:

PUserDAO userDao = PUserDAO.getInstance()
List<PUser> pUsers = userDao.getAll()
for
(pUser in pUsers) { println "user: ${pUser.getLogin()}" }