Preciso extrair um objeto connection a partir de um entity manager

7 respostas
M

Bom dia,
Eu estou tentando realizar a conversão deste trecho:

que consta nesta página:
http://wiki.eclipse.org/EclipseLink/Examples/JPA/EMAPI

mas não consigo entender o que seria este unitOfWork
também gostaria de saber como faço para ver a versão do jpa que estou usando (deve ser a primeira, porque o compilador do eclipse não retornava um método unwrap).
Grato

7 Respostas

M

Ninguém?
Isso está me travando há dias.
Por favor, realmente preciso de ajuda.

F

JPA 2.0

entityManager.getTransaction().begin();
java.sql.Connection connection = entityManager.unwrap(java.sql.Connection.class);
...
entityManager.getTransaction().commit();

E para saber o que é UnitOfWork:
http://www.google.com.br/#hl=pt-BR&source=hp&q=UnitOfWork+&aq=f&aqi=&aql=&oq=&gs_rfai=&fp=1408856fcef2a769
Primeiro resultado!

M

Muito obrigado pela resposta, Felipe.
Realmente não entendi muita coisa nesse site do Fowler, o que eu vi foi que existe a interface UnitOfWorkCallBack, que não me foi muito útil.
Sou iniciante em java e precisaria de algo mais detalhado pra este cenário, ou seja como posso aplicar este caso.

Não entendi a primeira parte da sua resposta, essa foi a parte que eu postei, não?

F

Opa, sim é a mesma sua resposta, porém acredito que vc esteja usando JPA 2.0 certo?

Se sim vc não irá usar este cara:

JPA 1.0
entityManager.getTransaction().begin();
UnitOfWork unitOfWork = (UnitOfWork)((JpaEntityManager)entityManager.getDelegate()).getActiveSession();
unitOfWork.beginEarlyTransaction();
java.sql.Connection connection = unitOfWork.getAccessor().getConnection();
...
entityManager.getTransaction().commit();

só aquele trecho que postei acima.

abraço

M

Ah, tá.
Não, acho que não é 2.0, porque o eclipse não exibe o método unwrap do entity manager.
Como faço pra ver a versão do jpa?

F

Lá no teu persistence.xml tem um atributo “version”,
aqui tem um tuto legal: http://imasters.uol.com.br/artigo/16197/java/jpa_20_na_pratica_com_hibernate_35/

abraço

M

É 1.0 sim:

<persistence version="1.0"

Alguém me ajuda, por favor! Tenho que entregar isso pro TCC neste sábado e estou me desesperando.

Criado 2 de agosto de 2010
Ultima resposta 2 de ago. de 2010
Respostas 7
Participantes 2