Created
November 10, 2009 13:16
-
-
Save leandrosilva/230884 to your computer and use it in GitHub Desktop.
Algumas dicas avançadas de jpa + ejb3: persistence unit
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* (Código 1) | |
* | |
* Anotação @PersistenceUnit sendo usada num Stateful SessionBean para registrar | |
* um EntityManagerFactory no contexto JNDI sob o nome "persistencia/MaritimoDB", | |
* tendo como unidade de persistencia "MaritimoDB". | |
*/ | |
@Stateful | |
@PersistenceUnit(name="persistencia/MaritimoDB", unitName="MaritimoDB") | |
public class AgenteDeTurismoBean implements AgenteDeTurismoRemote { | |
@PersistenceUnit(unitName="MaritimoDB") | |
private EntityManagerFactory maritimo; | |
... | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* (Código 2) | |
* | |
* Exemplo de lookup desse EntityManagerFactory registrado via @PersistenceUnit. | |
* | |
* O root do JNDI context neste caso é "java:comp/env/". | |
*/ | |
InitialContext jndiContext = new InitialContext( ); | |
EntityManagerFactory maritimo = (EntityManagerFactory) | |
jndiContext.lookup("java:comp/env/persistencia/MaritimoDB"); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* (Código 3) | |
* | |
* Outra possibilidade é registrar mais de uma EntityManagerFactory. | |
*/ | |
@Stateful | |
@PersistenceUnits({ | |
@PersistenceUnit(name="persistencia/MaritimoDB", | |
unitName="MaritimoDB"), | |
@PersistenceUnit(name="Clientes", | |
unitName="ClientesDB") | |
}) | |
public class AgenteDeTurismoBean implements AgenteDeTurismoRemote { | |
@PersistenceUnit(unitName="MaritimoDB") | |
private EntityManagerFactory maritimo; | |
@PersistenceUnit(unitName="ClientesDB") | |
private EntityManagerFactory clientes; | |
... | |
} | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* (Código 4) | |
* | |
* Exemplo de lookup dos dois EntityManagerFactory registrados vias @PersistenceUnits. | |
* | |
* Como visto acima, o root do JNDI context neste caso é "java:comp/env/". | |
*/ | |
InitialContext jndiContext = new InitialContext( ); | |
EntityManagerFactory maritimo = (EntityManagerFactory) | |
jndiContext.lookup("java:comp/env/persistencia/MaritimoDB"); | |
EntityManagerFactory clientes = (EntityManagerFactory) | |
jndiContext.lookup("java:comp/env/Clientes"); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* (Código 5) | |
* | |
* Um outro ponto é que unidades de persistencia tem escopo: | |
* | |
* - quando são definidas em um arquivo WAR ou EJB-JAR, só podem ser vistas e | |
* usadas por classes dentro destes arquivos; | |
* - quando são definidas em um arquivo WAR ou EJB-JAR empacotados em um EAR, | |
* podem ser vistas por qualquer classe em qualquer destes arquivos. O escopo | |
* torna-se o arquivo EAR. | |
* | |
* Muito raramente você teria, por exemplo, duas unidades de persistencia com o | |
* mesmo nome, uma no arquivo WAR e outra no arquivo EJB-JAR. Neste caso, EJB3 | |
* te dá a possibilidade de dizer exatamente qual a unidade de persistencia que | |
* você quer usar. | |
*/ | |
@PersistenceUnit(unitName="vendas.jar#VendasDB") | |
EntityManagerFactory vendas; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment