Association des fournisseurs de persistance et des sources de données
Les applications JPA Java™ Persistence API) spécifient la source de données sous-jacente utilisée par le fournisseur de persistance pour accéder à la base de données.
Pourquoi et quand exécuter cette tâche
Procédure
- Spécifiez explicitement le nom JNDI (Java Naming and Directory Interface) dans le fichier persistence.xml et
l'application se référence directement à la source de données. L'accès à une autre source de données requiert
une mise à jour du fichier persistence.xml. JPA dispose de deux éléments de transaction pour accéder à une source de données :
- Le modèle de ressources JTA (Java Transaction API) dépend des transactions globales. Il est typiquement utilisé dans le cadre d'une façade de sessions EJB (Enterprise JavaBeans). Cela permet au bean de session de contrôler les contextes de transaction, alors que l'API JPA gère les mappages de persistance. Dans ce cas, une fois accessible, l'application n'utilise pas l'interface EntityTransaction mais repose sur EntityManager enrôlée avec la transaction globale.
- L'élément de ressource non-JTA est utilisé pour gérer un seul ressource en absence des transactions globales. L'élément de ressource non-JTA est typiquement utilisé dans le cadre d'une application Web ou d'un client d'application. L'application contrôle la transaction avec la source de données à l'aide de l'interface EntityTransaction.Dans le serveur d'applications, l'utilisation de l'élément <non-jta-data-source> requiert une configuration spéciale pour une source de données non transactionnelle. Les sources de données configurées pour le serveur d'applications ne fonctionnent pas comme élément <non-jta-data-source>, car toutes les sources de données configurées par le serveur d'applications sont automatiquement enrôlées dans le contexte transactionnel en cours. Pour éviter cet enrôlement automatique, ajoutez une propriété personnalisée de source de données nonTransactionalDataSource=true supplémentaire :
- Sélectionnez Ressources > JDBC > Sources de données
- Sélectionnez le nom de la source de données que vous voulez configurer.
- Sélectionnez Propriétés de la source de données dans l'en-tête Propriétés supplémentaires.
- Sélectionnez Source de données non transactionnelle.
- Cliquez sur OK.
Eviter les incidents: La spécification JPA suppose que les connexions sont obtenues avec un niveau d'isolement qui ne maintient pas des verrous à terme dans la base de données, tels que READ_COMMITTED. Cela peut être contraire au niveau d'isolement par défaut de WebSphere Application Server, qui est REPEATABLE_READ pour la plupart des bases de données. Vous pouvez connaître le niveau qui est utilisé pour votre base de données en vous référant à la rubrique Exigences pour régler le niveau d'isolement.
Si la valeur par défaut pour votre base de données n'est pas READ_COMMITTED, vous pouvez la modifier en ajoutant une propriété personnalisée de source de donnée webSphereDefaultIsolationLevel.Si le niveau d'isolement est défini sur une valeur qui maintient des verrous de lecture à long terme, configurez le fournisseur JPA afin d'utiliser la valeur Pessimistic Locking au lieu de la valeur par défaut Optimistic Locking.Tableau 1. Valeurs de niveau d'isolement. Ce tableau présente les valeurs de niveau d'isolement valides. valeur Niveau d'isolement 1 READ_UNCOMMITTED 2 READ_COMMITTED (JPA par défaut) 4 REPEATABLE_READ (valeur par défaut pour WebSphere Application Server) 8 SERIALISABLE Pour EclipseLink, utilisez la propriété suivante dans votre fichier persistence.xml :<property name=”eclipselink.pessimistic-lock” value=”Lock”/>
Pour OpenJPA, utilisez les propriétés suivantes dans votre fichier persistence.xml :gotcha<property name="openjpa.Optimistic" value="false"/> <property name="openjpa.LockManager" value=pessimistic"/>
La spécification JPA exige que les sources de données définies dans les éléments <jta-data-source> et <non-jta-data-source> d'une unité de persistance soient enregistrées dans l'espace de nom JNDI.
Par exemple, le fichier persistence.xml doit contenir une entrée similaire à ce qui suit :<jta-data-source>jdbc/DataSourceJNDI</jta-data-source>
- La solution JPA for WebSphere Application
Server étend l'implémentation de la source de données JNDI afin de vous autoriser à référencer les sources de données dans l'espace de nom de composant. Dans le fichier descripteur de déploiement du module Web ou EJB, il s'agit de l'élément <resource-ref>. Vous pouvez ajouter le préfixe java:comp/env/ à la source
de données. L'application fait ainsi indirectement référence à la source de données à l'aide du nom JNDI local. Dans cette association, l'application ne requiert aucune mise à jour. Il vous suffit de modifier l'élément <resource-ref> pour utiliser une autre source de données.
Examinez l'exemple suivant :
<jta-data-source>java:comp/env/jdbc/DataSourceJNDI</jta-data-source>
Que faire ensuite
Pour plus d'informations sur la configuration des sources de données, voir la rubrique sur la création et la configuration d'une source de données.


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tejb_defjpadatasource
Nom du fichier : tejb_defjpadatasource.html