Boa noite pessoal,
Estou com uma dúvida!
Por exemplo eu possuo 2 classes, ex: endereco e empresa
Na minha classe Bean eu chamo 2 classes para salvar minhas informações de empresa e endereco.
Ex:
enderecoRN.salvar(this.endereco);
this.getEmpresa().setEndereco(this.endereco);
empresaRN.salvar(this.empresa)
Se der algum erro para salvar a empresa o endereço é salvo.
Como eu faço para tipo um begintransaction e depois um commit na classe bean???
Obrigado.
Como vc tem feito atualmente para controlar a transação?
A minha classe EmpresaBean chama a EmpresaRN que chama EmpresaDAOHibernate
Classe:
EmpresaDAOHibernate
public void salvar(Empresa empresa){
this.session.save(empresa);
}
Obrigado
Em algum lugar você tem que abrir e fechar a transação.
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…
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