Hebert_Coelho
Como vc tem feito atualmente para controlar a transação?
Furlani
A minha classe EmpresaBean chama a EmpresaRN que chama EmpresaDAOHibernate
Classe:
EmpresaDAOHibernate
public void salvar(Empresa empresa){
this.session.save(empresa);
}
Obrigado
Hebert_Coelho
Em algum lugar você tem que abrir e fechar a transação.
Furlani
Então cara eu tenho mais 2 classes
DAOFactory
public static EmpresaDAO criarEmpresaDAO() {
EmpresaDAOHibernate empresaDAO = new EmpresaDAOHibernate();
empresaDAO.setSession(HibernateUtil.getSessionFactory()
.getCurrentSession());
return empresaDAO;
}
E a HibernateUtil
private static SessionFactory buildSessionFactory(){
try{
AnnotationConfiguration cfg = new AnnotationConfiguration();
cfg.configure("hibernate.cfg.xml");
return cfg.buildSessionFactory();
}catch(Throwable e){
System.out.println("Criação inicial do objeto SessionFactory Falhou. Erro: " + e);
throw new ExceptionInInitializerError(e);
}
}
Eu tentei colocar na minha na classe EmpresaDAOHibernate
public void salvar(Empresa empresa){
this.session.save(empresa);
}
Eu tentei comitar e fechar a sessão…
mas ele falava que a sessão jah foi fechada…
Furlani
Eu tenho a minha classe ConexaoHibernateFilter que usa o método doFilter que abre e fecha a conexão.
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws ServletException {
try {
this.sf.getCurrentSession().beginTransaction();
chain.doFilter(servletRequest, servletResponse);
this.sf.getCurrentSession().getTransaction().commit();
this.sf.getCurrentSession().close();
} catch (Throwable ex) {
try {
if (this.sf.getCurrentSession().getTransaction().isActive()) {
this.sf.getCurrentSession().getTransaction().rollback();
}
} catch (Throwable t) {
t.printStackTrace();
}
throw new ServletException(ex);
}
}
mas como eu trataria isso no meu Bean??
Obrigado