Greetings everyone!
Estou desenvolvendo um CRUD com Hibernate, bem generico, que trabalha com Object banco com o hibernate.
Faço isso para nao usar aquele monte de DAOs que me irritam.
Vejam o codigo:
[code]
@Transactional(readOnly=true)
public class GenericCRUD implements Serializable, CRUDInterface {
public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}
@Autowired
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
private Session getCurrentSession(){
return hibernateTemplate.getSessionFactory().openSession();
}
@Override
@Transactional
public List buscarTodos(Class classe){
criterio = getCurrentSession().createCriteria(classe);
return criterio.list();
}
@Override
@Transactional
public Object buscarPorID(Class classe, Serializable id){
return hibernateTemplate.get(classe, id);
}
@Override
@Transactional
public void salvarOuAtualizar(Object objeto){
hibernateTemplate.saveOrUpdate(objeto);
}
@Override
@Transactional
public void excluir(Object objeto){
hibernateTemplate.delete(objeto);
}
@Override
@Transactional
public List getByParametro(Class type, String parametro, String valor){
criterio = getCurrentSession().createCriteria(type);
criterio.setMaxResults(10);
criterio.add(Restrictions.ilike(parametro, valor));
return criterio.list();
}
private HibernateTemplate hibernateTemplate;
private Criteria criterio;
}[/code]
Continuo tendo varios objetos da classe GenericCRUD em cada BackingBean.
Assim:
[code]private CRUDInterface DAOGenerico;
@Autowired
public void setDAOGenerico(CRUDInterface DAOGenerico) {
this.DAOGenerico = DAOGenerico;
}
public void cadastrar() {
DAOGenerico.salvarOuAtualizar(cliente);
}[/code]
A questao eh:
Devo tornar esses metodos estaticos e nao ter repeticoes de objectos e de sessionfactorys e etc, visto que cada session do controller tera um deste objeto, lembrando que eh tudo instanciado pelo Spring como singletons?