Olá,
duvida referente ao que fazer em uma transação com dois objetos
onde vou incluir um log e um usuário só que tem que dar o commit
quando os dois foram sem erro .
E da forma que está grava o log e se der erro no usuário faz só rollback
no usuário ???
Teria outra forma de fazer :
- teria que controlar begin,commit na chamada do serviço
- fazer um serviço especifico pra tratar essa situação
Alguém teria laguma idéia como fazer ou controlar isso ???
hoje o que estou fazendo :
LogDao logDao = new LogDao()
Log log = new Log();
log.setProcesso("Processo 40");
logDao.persist(log);
UsuarioDao usuarioDao = new UsuarioDao()
Usuario usuario = new Usuario();
usuario.setNome("Novo Nome");
usuarioDao.persist(usuario);
public abstract class AbstractBaseDao<T extends Entity, ID extends Serializable>
public class LogDao extends AbstractBaseDao<Log, Long>
---DAO Generico pra todas entidades
public void persist(T t) throws DaoException {
try {
em.getTransaction().begin();
em.persist(t);
em.getTransaction().commit();
} catch(Exception e) {
em.getTransaction().rollback();
}finally{
}
public void merge(T t) throws DaoException {
try {
// em = factory.createEntityManager();
em.getTransaction().begin();
em.merge(t);
em.getTransaction().commit();
} catch(Exception e) {
em.getTransaction().rollback();
}finally{
}
}
////////////////////////////////////////////////////////////////////////////////////
public class UsuarioDao extends AbstractBaseDao<Log, Long>
---DAO Generico pra todas entidades
public void persist(T t) throws DaoException {
try {
em.getTransaction().begin();
em.persist(t);
em.getTransaction().commit();
} catch(Exception e) {
em.getTransaction().rollback();
}finally{
}
---
public void merge(T t) throws DaoException {
try {
// em = factory.createEntityManager();
em.getTransaction().begin();
em.merge(t);
em.getTransaction().commit();
} catch(Exception e) {
em.getTransaction().rollback();
}finally{
}
}