Problemas! anotation @Stateless

4 respostas
G

Aew pessoal sou novo utilizando JPA e tava olhando a JPA Annotation Reference sobre persistenceContext que tinha o seguinte codigo:

@Stateless

public class OrderEntryBean implements OrderEntry {

@PersistenceContext(name=OrderEM)

@PersistenceUnit(name=OrderEMFactory, unitName=OrderEMUnit)

EntityManager em;

public void enterOrder(int custID, Order newOrder) {

em = (EntityManager)[b]ctx.lookup<a>/b</a>;

Customer cust = em.find(Customer.class, custID);

cust.getOrders().add(newOrder);

newOrder.setCustomer(cust);

}

}

copiando esse mesmo codigo no eclipse ele n encontra a anotacao @Stateless e na parte ctx.lookup ele n reconhece o “ctx”, mas reconhece a outras anotations como: @Id,@Entity
alguem pode me dar um toke…?

o toplink-essentials.jar e toplink-essentials-agent.jar ja está no path

4 Respostas

ze_kiefa

Segundo o exemplo de JPA que segue na última revista Mundo Java, a anotação @Stateless é utilizada em EJB (JEE).
Se você está utilizando somente JPA (JSE), é necessário ter uma classe que crie uma EntityManager, substituindo a anotação acima.

Não domino muito o assunto, mais esclarecimentos de outros participantes do fórum são bem-vindos.

G

ahh entao será que o EntityManager só é fornecido atraves do pacote javax.persistence do toplink.esssentials.jar, ou seja, nesse caso n prescisa do @Stateless?

ze_kiefa

Bom, segundo a última edição da revista Mundo Java, segue uma breve explicação.

No JEE o EntityManager é gerenciado e injetado pelo Container:

@Stateless
public class GerenciadorPessoaBean implements GerenciadorPessoa{
 @PersistenceContext
 private EntityManager manager;
 public void salva(Pessoa pessoa){
  this.manager.persist( pessoa );
 }
}

No JSE, por não haver um Container, há a necesidade de se ter uma classe que crie uma instância do EntityManager:

public class JPAUtil{
 private static EntityManagerFactory emf;
 
 static{
  emf = Persistence.createEntityManagerFactory( "arquivo_persistence.xml" );
 }

 public statuc EntityManager getEntityManager(){
  return emf.createEntitymanager();
 }
 
}

OK?

G

traquilo ze_kiefa!

agora foi compreendido!

Criado 2 de setembro de 2007
Ultima resposta 3 de set. de 2007
Respostas 4
Participantes 2