@PersistenceContext

4 respostas
evertonsilvagomesjav

Pessoal tem como alguem me explicar, se eu tenho esse metodo que retorna um EntityManager:

private static EntityManagerFactory emf;  

09    

10          public static EntityManager getEntityManager() {  

11                  if (emf == null){  

12                           emf = Persistence.createEntityManagerFactory("agenda");  

13                  }  

14                  return emf.createEntityManager();  

15          }  

16
Pra que vou precisar disso?
@PersistenceContext(unitName = "agenda")  
016     private final EntityManager entityManager;
public GenericDao() {  
020         this.entityManager = EntityManagerUtil.getEntityManager();  
 }

Pra que usar a annotation PersistenceContext nesse caso? So com o retorno do método nao funcionaria?

4 Respostas

Hebert_Coelho

No primeiro caso é utilizado como se fosse conexão manual, no segundo caso como injeção pelo servidor.

São estratégias diferentes.

E se prepare, se for misturar as duas, você vai ter muita dor de cabeça. :stuck_out_tongue:

evertonsilvagomesjav

jakefrog:
No primeiro caso é utilizado como se fosse conexão manual, no segundo caso como injeção pelo servidor.

São estratégias diferentes.

E se prepare, se for misturar as duas, você vai ter muita dor de cabeça. :P

Pois é, eu vi um exemplo com os dois, mas se for o caso para mim usar somente com a injeção via annotation tem que ter um servidor de app? Se for uma aplicação desktop usando a annotation não funcionaria?

Hebert_Coelho

Annotation é diferente de Injeção.

@Table é uma anotação que funciona em qualquer tipo de aplicação ORM.

Injeção é alguém fazer o trabalho sujo de criar uma instância de objeto/transação/conexão e deixa que você utilize.

Quando se usa um servidor JEE ele faz a injeção da conexão, ele irá gerenciar a transação e tudo mais.

Isso ainda não existe para desktop.

evertonsilvagomesjav

Entendi Jake, mas isso @PersistenceContext não deixa de ser uma anotação né n? Entendi que com ela o servidor ira instanciar o EntityManager e cria-lo para mim.

Criado 14 de fevereiro de 2012
Ultima resposta 14 de fev. de 2012
Respostas 4
Participantes 2