Recuperar um java.sql.Connection do EntityManager

6 respostas
M

Boa Tarde, Gostaria de saber se e possivel recuperar um java.sql.Connection , ou entao gostaria de saber se e possivel executar comandos de um script.sql por EntityManager.

Att
Marcus Barcelos

6 Respostas

gleise

Taí uma coisa que não tentei ainda! :smiley:

Então, você tentou ler o arquivo em uma String e rodar em.createNativeQuery(String); ?

Se conseguir, posta a solução.

sergiotaborda

mvlbarcelos:
Boa Tarde, Gostaria de saber se e possivel recuperar um java.sql.Connection , ou entao gostaria de saber se e possivel executar comandos de um script.sql por EntityManager.

Não é possivel.
Só não é possivel porque é absurdo. O papel do EntityManager não é executar SQL

Use um DataSource e pegue o connection de lá.

Paulo_Silveira

sergiotaborda:
[
Só não é possivel porque é absurdo. O papel do EntityManager não é executar SQL

Realmente nao é o papel, mas infelizmente da: pelo createNativeQuery como disse gleise!

Da pra pegar a Connection normalmente pelo getDelegate()

E na JPA 2 vai dar pra pegar Connection por padrao!

sergiotaborda

Paulo Silveira:
sergiotaborda:
[
Só não é possivel porque é absurdo. O papel do EntityManager não é executar SQL

Realmente nao é o papel, mas infelizmente da: pelo createNativeQuery como disse gleise!

Assim consegue executar SQL nativo , isso é diferente de pegar o connection


Da pra pegar a Connection normalmente pelo getDelegate()

E na JPA 2 vai dar pra pegar Connection por padrao!

Ao que o mundo chegou … :cry:

Sparcx86

sergiotaborda:
Paulo Silveira:
sergiotaborda:
[
Só não é possivel porque é absurdo. O papel do EntityManager não é executar SQL

Realmente nao é o papel, mas infelizmente da: pelo createNativeQuery como disse gleise!

Assim consegue executar SQL nativo , isso é diferente de pegar o connection


Da pra pegar a Connection normalmente pelo getDelegate()

E na JPA 2 vai dar pra pegar Connection por padrao!

Ao que o mundo chegou … :cry:


Na certa eles tomaram a decisão certa. Isso porque JPA não cobre todas as possibilidades possiveis de uso em um banco de dados (me diz como se lê uma arquivo de 100mb via stream por JPA que eu quero ver) :roll:
Com isso eles deixam o desenvolvedor mais livre para se virar ao inves de esperar que eles desenvolvam tudo o que precisamos.
Acho que este topico pode ajudar muita gente.

orogerio

Assim vc consegue recuperar um java.sql.Connection do JPA (se o persisistence.xml usar transaction-type=“RESOURCE_LOCAL”)

Connection jpa = ((oracle.toplink.essentials.ejb.cmp3.EntityManager) em).getServerSession().getDefaultConnectionPool().acquireConnection().getConnection();

Até mais
Rogério

Criado 26 de junho de 2008
Ultima resposta 9 de set. de 2010
Respostas 6
Participantes 6