Est-il possible d'initialiser l'EntityManager sans une unité de persistance ?
Vous devez définir au moins une unité de persistance dans l'persistence.xml le descripteur de déploiement.
Pouvez-vous donner toutes les propriétés requises pour créer un gestionnaire d'entité ?
- Le nom de l'attribut est requis; les autres attributs et les éléments sont en option. (Spécification JPA)
...
<persistence>
<persistence-unit name="<REQUIRED_PERSISTENCE_UNIT_NAME_GOES_HERE>">
SOME_PROPERTIES
</persistence-unit>
</persistence>
Dans les environnements Java EE, le jta-data-source et non-jta-data-source-éléments sont utilisés pour spécifier le nom JNDI global de la JTA et/ou de non-source de données JTA à être utilisés par le fournisseur de persistance.
Donc, si votre Serveur d'Applications cible prend en charge JTA (JBoss, Websphere, GlassFish), votre persistence.xml ressemble
<persistence>
<persistence-unit name="<REQUIRED_PERSISTENCE_UNIT_NAME_GOES_HERE>">
<!--GLOBAL_JNDI_GOES_HERE-->
<jta-data-source>jdbc/myDS</jta-data-source>
</persistence-unit>
</persistence>
Si votre Serveur d'Applications cible ne prend pas en charge JTA (Tomcat), votre persistence.xml ressemble
<persistence>
<persistence-unit name="<REQUIRED_PERSISTENCE_UNIT_NAME_GOES_HERE>">
<!--GLOBAL_JNDI_GOES_HERE-->
<non-jta-data-source>jdbc/myDS</non-jta-data-source>
</persistence-unit>
</persistence>
Si votre source de données n'est pas lié à une JNDI global (par exemple, à l'extérieur d'un conteneur Java EE), de sorte que votre persistence.xml ressemble
Vous définissez en général JPA fournisseur du pilote, l'url, l'utilisateur et le mot de passe de propriétés. Mais le nom de la propriété dépend de la JPA fournisseur. Je vais vous montrer Hiberner comme fournisseur JPA
<persistence>
<persistence-unit name="<REQUIRED_PERSISTENCE_UNIT_NAME_GOES_HERE>">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>br.com.persistence.SomeClass</class>
<properties>
<property name="hibernate.connection.driver_class" value="org.apache.derby.jdbc.ClientDriver"/>
<property name="hibernate.connection.url" value="jdbc:derby://localhost:1527/EmpServDB;create=true"/>
<property name="hibernate.connection.username" value="APP"/>
<property name="hibernate.connection.password" value="APP"/>
</properties>
</persistence-unit>
</persistence>
Type De Transaction De L'Attribut
En général, dans les environnements Java EE, un type de transaction RESOURCE_LOCAL suppose qu'un non-source de données JTA seront fournis. Dans un environnement Java EE, si cet élément n'est pas spécifié, la valeur par défaut est JTA. Dans un environnement Java SE, si cet élément n'est pas spécifié,
un défaut de RESOURCE_LOCAL est utilisée.
- Pour assurer la portabilité de Java SE demande, il est nécessaire de mentionner la persistance gérée par les classes qui sont inclus dans l'unité de persistance (spécification JPA)
J'ai besoin de créer un EntityManager de l'utilisateur valeurs spécifiées au moment de l'exécution
Donc de l'utiliser
Map addedOrOverridenProperties = new HashMap();
// Let's suppose we are using Hibernate as JPA provider
addedOrOverridenProperties.put("hibernate.show_sql", true);
Persistence.createEntityManagerFactory(<PERSISTENCE_UNIT_NAME_GOES_HERE>, addedOrOverridenProperties);
en ce qui concerne,