quinta-feira, 5 de abril de 2007

A Fabrica de DAOs


Este artigo explora as classes envolvidas na fabrica de DAOs do ITrust, nossa fabrica encontra-se dentro do package "org.iprogramming.model.persistence.factory". A fabrica de DAOs tem a funcão de abstrair qual a forma de acesso ao banco de dados e setar a sessão corrente do hibernate. Apesar de nosso foco ser a integração com o hibernate, nao podemos ficar presos a esta ferramenta, entao vamos dar a possibilidade de vc acessar o banco de dados via JDBC. Segue abaixo nosso exemplo

|---+persistence
|
|---dao
|---dto
|---factory
|---transaction


public abstract class DAOFactory {
public static final int HIBERNATE = 1;
public static final int SQLServer = 2;

public static DAOFactory getDAOFactory(int whichFactory){
switch(whichFactory){
case 1:
return new HibernateDAOFactory();
case 2:
return new SQLDAOFactory();
default:
return null;
}
}

public abstract LoginDAO getLoginDAO();
}


Essa é a nossa implementação para uma fabrica de DAOs do Hibernate

public class HibernateDAOFactory extends DAOFactory{
private static Session getCurrentSession() {
return HibernateHelper.currentSession();
}

public LoginDAO getLoginDAO() {
return new HibernateLoginDAO().setSession(getCurrentSession());
}
}

Ao instancia o nosso DAO, precisamos setar a sessão corrente do hibernate, isso é feito através do método que herdamos da classe GenericHibernateDAO. Portanto finalizamos aqui, agora se vc precisa consultar os registros da tabela de login basta vc fazer o seguinte procedimento:

DAOFactory factory = DAOFactory.getDAOFactory(DAOFactory.HIBERNATE);
LoginDAO loginDAO = factory.getLoginDAO();
List list = loginDAO.list(Login.class);

No próximo artigo vamos estudar como fazer o controle de transações do hibernate.

Um comentário:

Unknown disse...

Opa Cara, pq nao usasse enum para o tipo de cada DAO?