Como fazer para criar 1 session como auto-commit ?? gostaria de deixar apenas uma session assim no meu banco =/ … alguem tem 1 dica ??
tipo sessionFactory.openSession(autoCommitTrue);
alguem sabe como fazer ?
Como fazer para criar 1 session como auto-commit ?? gostaria de deixar apenas uma session assim no meu banco =/ … alguem tem 1 dica ??
tipo sessionFactory.openSession(autoCommitTrue);
alguem sabe como fazer ?
Ola Lavieri !
Ja pensou em implementar um metodo que retorne uma Session, porem com AutoCommit ?!
Por exemplo:
public Session getUniqueSession() {
// implemente aqui o commit
}
E quando vc precisar usar o auto commit, vc chama o metod getUniqueSession(); que tera uma implementação de commit.
[ ]s,
Não é bem isso que vc falou… meu problema é que posso configurar no inicio, pra minha conexão com o banco de dados ser do tipo AUTO-COMMIT … nas configurações de hibernate, mais fazendo isso, todas as minha session sairiam com AUTO-COMMIT …
openSession() da session factory pode receber um argumento do tipo Connection,
ou seja, eu posso mandar uma conexão diferente da que o hibernate usa, com auto-commit ativo, mas não sei bem como fazer…
Voce pode ter duas SessionFactorys com o Hibernate… uma com auto-commit e a outra não.
so se eu for louco pra criar 2 sessionFactory o.O muito demorada… nem…
bom, pelo que vi, meu banco não fica auto-commit não sei o q é… setei auto-commit e naum vai =/
Tem uma propriedade que voce seta para o hibernate fazer isso…
Mas qual é sua intenção com esse auto-commit?
utilizar somente
session.update(object);
E ter ele atualizado sem abrir a transação e enviar?
Se for isso e voce tiver uma classe DAO voce pode criar um método que já fizesse isso no update… funcionaria do modo que falei mas faria sem o auto-commit por baixo dos panos.
Não tenho DAO, pq Hibernate não precisa de DAO ...
tenho 1 repositorio publico, que aceito qualquer tipo de entidade
Repositories.marge(Entity entity)
Repositories.persist(Entity entity)
Repositories.remove(Entity entity)
Repositories.refresh(Entity entity)
Existem 1 sessao publica, usada pra consulta... de forma rapida, não fico abrindo e fechando tranzações nessa sessão...
Eu tenho a possibilidade de criar sessões novas... e envialas para o repositorio na hora de persistir
Repositories.marge(Session newSession, Entity entity)
Repositories.persist(Session newSession, Entity entity)
Repositories.remove(Session newSession, Entity entity)
Repositories.refresh(Session newSession, Entity entity)
queria q a sessão publica fosse auto-comit ...
meu medo é o repositorio concorrentemente, kerer fazer tranzações, uma em um lugar falhar, na sessão public e ele dar rollback, em operação dos outros..
na sessão publica se for persitir, é pra fazer sem tranzaction... mas não ta dando certo =/
Edit.: ... atualmente meu Repositorio esta assimpublic void persist(Object entity) throws NotEntityException,
HibernateException, IllegalArgumentException {
persist(SESSION, entity); //aqui se fosse auto-commit, não precisaria enviar para o outro método
}
public void persist(Session session, Object entity)
throws NotEntityException, HibernateException,
IllegalArgumentException {
if (session.getTransaction().isActive()) {
session.persist(entity);
return;
}
try {
session.beginTransaction();
session.persist(entity);
session.getTransaction().commit();
} catch (RuntimeException ex) {
session.beginTransaction().rollback();
throw ex;
}
}
É o que eu disse… disfarça o auto-commit
public void persist(Object entity) throws NotEntityException,
HibernateException, IllegalArgumentException {
SESSION.beginTransaction();
SESSION.persist(entity);
SESSION.getTransaction.commit();
}
public void persist(Session session, Object entity)
throws NotEntityException, HibernateException,
IllegalArgumentException {
if (session.getTransaction().isActive()) {
session.persist(entity);
return;
}
try {
session.beginTransaction();
session.persist(entity);
session.getTransaction().commit();
} catch (RuntimeException ex) {
session.beginTransaction().rollback();
throw ex;
}
}