¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Como acessar o Contexto de Persistência JPA a partir de uma classe DAO em Java EE

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 0 Vistas
0
Cargando...

Olá a todos,

Estou trabalhando em um projeto simples de Java EE.

Quero acessar entidades JPA na minha classe DAO, que é uma classe java simples. Mais tarde, chamarei a classe DAO a partir de um bean de sessão sem estado (lógica de negócios).

Agora, o problema é que não consigo acessar o Contexto de Persistência JPA a partir da minha classe DAO. Tentei com o seguinte código:

EntityManagerFactory emf = Persistence

* .createEntityManagerFactory("PS_LTP_PU");*

* EntityManager entityManager = emf.createEntityManager();*

Também tentei com

@PersistenceContext(unitName="PS_LTP_PU")

EntityManager entityManager;

No primeiro caso, é exibida a seguinte exceção:

javax.persistence.PersistenceException: No hay proveedor de Persistencia para EntityManager llamado PS_LTP_PU

No segundo caso, lança uma Exceção de Puntero Nulo para o Entity Manager.

Qual é o problema?

Como posso resolver este problema?

Obrigado

Sampath

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

>No entanto, uma dúvida é que eu quero abstrair tudo relacionado à persistência da minha classe de negócios (bean de sessão sem estado) colocando-o em uma classe DAO simples. Mas na sua abordagem, o bean de sessão de negócios estará ciente da persistência. Este é um enfoque padrão ou há outro enfoque disponível para o meu caso?

A característica de Injeção de Dependências não funciona em classes Java simples, apenas em EJB. Porque somente o contêiner EJB é responsável pela injeção.

Portanto, você pode tentar criar dois EJB: um será responsável pela persistência e outro será responsável pela lógica do seu negócio.

Saudações, Sergei

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá Adrian,

Obrigado por sua resposta.

Vou tentar e lhe perguntarei se tiver algum problema.

Mas uma dúvida é que quero abstrair tudo relacionado à persistência da minha classe de negócios (bean de sessão sem estado) colocando-o em uma classe DAO simples.

No entanto, em sua abordagem, o bean de sessão de negócios estará ciente da persistência. Este é um enfoque padrão ou há alguma outra abordagem disponível para o meu caso?

Obrigado

Sampath

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá Sampath,

Seu primeiro tentativa falha porque o provedor de persistência SAP JPA não é visível para a aplicação (nem para javax.persistence.Persistence).

Sua segunda tentativa falha porque a injeção de dependências não está disponível para classes Java simples.

Para obter um entity manager de uma classe Java simples, primeiro você deve vinculá-lo ao JNDI. A forma mais fácil de fazer isso é utilizando a anotação @PersistenceContext no seu bean de sessão:

@PersistenceContext(name="theJndiName", unitName="PS_LTP_PU")
@Stateless
public class YourBean {
...

Em seguida, você pode procurá-lo no JNDI no seu DAO

void someMethod() {
     Context ctx = new InitialContext();
     EntityManager em = ctx.lookup("theJndiName");

-Adrian

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Eu resolvi o problema.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?