Hibernate duvida basica

5 respostas
H

Pessoal, é o seguinte ...
Estou fazendo uma aplicação pra testar o hibernate.
ela funciona da seguinte maneira.

tenho um botão que abre a transação:
public void beginTransaction() {
		em = emf.createEntityManager();

		em.getTransaction().begin();
	}
que fecha a transação:
public void closeTransaction() {
		em.close();
	}
que persist o objeto:
public void save(T entity) {
		em.persist(entity);
	}
e que commita:
public void commit() {
		System.out.println(em.getTransaction().isActive());
		em.getTransaction().commit();
		System.out.println(em.getTransaction().isActive());
	}
reparem que estou fazendo os testes se a transação está ativa ou não. O resultado do 1º print é true, do 2º é false

portanto meu primeiro commit da aplicação, ele salva normalmente no banco, porém a transação é fechada e eu não consigo mais salvar objetos no banco depois do primeiro commit.
queria saber se existe uma maneira de "commitar" uma transação e ainda continuar com a transação aberta, fechando ela apensa quando chamar o método "closeTransaction();"

espero ter sido claro :D

5 Respostas

romarcio

A transação é única. Você não pode usar a mesma transação varias vezes.

J

translação? o correto é transação :smiley:

H

Então, pode exemplo, se eu salvar 10 pessoas no BD e usar o commit, pra mim salvar mais 1 pessoa, terei de abrir uma nova transação persistir o objeto e commitar de novo ?
ao invés de apenas persistir a nova pessoa e “commitar” ? :’(

Ops… vou corrigir minhas “translação” auheuaehaueh

J

exatamente, após o commit, uma nova transação deve ser aberta

H

Ok ! obrigado …

mas tenho mais duas outras duvidas.

  1. em todos outros Frameworks funciona assim ? ou isso é uma particularidade do hibernate ?

  2. meu professor mostrou um exemplo na sala de aula onde a aplicação dele permitia duas transação ao mesmo tempo em uma mesma tabela (apesar de não ser muito usado, é possivel). Porém ele usou um Framework do C# para mostrar o exemplo.

no exemplo dele, ao iniciar a transação, ele usava o método readCommited e readUncommitted. Será que é possível fazer isso no hibernate também ?

Criado 19 de outubro de 2012
Ultima resposta 19 de out. de 2012
Respostas 5
Participantes 3