No Java SE, os gerenciadores de entidades são criados usando um javax.persistence.EntityManagerFactory. Embora de podermos utilizar a interface factory no Java EE, essa plataforma fornece alguns recursos adicionais que tornam mais fácil e menos prolixo gerenciar instâncias do gerenciador de entidades.
*EntityManagerFactory
O EntityManager pode ser criado ou obtido de uma EntityManager Factory. Em um aplicativo Java SE, você precisa utilizar uma EntityManagerFactory para criar instâncias de um EntityManager. Utilizar o criador de instâncias (factory) não é um requisito no Java EE.
Os métodos createEntityManager() retornam instâncias EntityManager que gerenciam um contexto de persistência estendido distinto. Você pode passar um parâmetro java.util.Map para sobrescrever ou estender quaisquer propriedades específicas de provedor no qual não esta declarado no arquivo persistence.xml. Depois de terminar de utilizar a EntityManagerFactory, você deve usar close() para fechá-la (a menos que ela seja injetada). O método isOpen() permite verificar se a referência EntityManagerFactory continua válida.
*Obtendo uma EntityManagerFactory no Java SE
No Java SE, a classe javax.persistence.Persistence é responsável pela inicialização de um EntityManagerFactory.
A classe javax.persistence.Persistence procura os descritores de implantação persistence.xml dentro de seu caminho de classe Java. O parâmetro do tipo String que deve ser passado permite que a implementação Persistence localize uma EntityManagerFactory que corresponde com o nome dado.
No Java SE, é recomendável usar close() para fechar a EntityManagerFactory. Isso libera todos os recursos mantidos pela factory.
*Obtendo uma EntityManagerFactory no Java EE
No Java EE, é um pouco mais fácil obter uma EntityManagerFactory. Ela pode ser injetada diretamente em um campo ou método setter dos seus EJBs utilizando a anotação @javax.persistence.PersistenceUnit.
O unitName() é a identidade da PersistenceUnit. Quando a PersistenceUnit é utilizada, além de injetar a EntityManagerFactory, ela também registra uma referência a si própria dentro do JNDI ENC do EJB. O contêiner EJB é responsável por avisar a anotação @PersistenceUnit e injetar a factory correta.
Diferentemente do Java SE, um EntityManagerFactory injetada é automaticamente fechada pelo contêiner EJB quando a instância é descartada. Na realidade, se você chamar close() em uma EntityManagerFactory injetada, será lançada uma IllegalStateException.
Qualquer duvida, mande um email para leurimar.lins@gmail.com
Nenhum comentário:
Postar um comentário