@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;
}
Continuo tendo varios objetos da classe GenericCRUD em cada BackingBean.
Assim:
private CRUDInterface DAOGenerico;
@Autowired
public void setDAOGenerico(CRUDInterface DAOGenerico) {
this.DAOGenerico = DAOGenerico;
}
public void cadastrar() {
DAOGenerico.salvarOuAtualizar(cliente);
}
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?