Technologies associées aux beans de persistance gérée par conteneur

WebSphere Application Server propose des services de persistance gérée par conteneur (CMP) qui vont au-delà des normes posées par la spécification d'Enterprise JavaBeans (EJB).

Selon la spécification, le conteneur d'EJB synchronise l'état des beans CMP avec la base de données sous-jacente, et gère les relations (relations gérées par conteneur ou CMR) parmi les beans entity. Ainsi, grâce à la spécification d'EJB, les développeurs de beans n'ont pas besoin d'écrire de code spécifique aux bases de données. Ils peuvent se consacrer à la logique applicative. WebSphere Application Server offre des fonctions CMP supplémentaires, destinées à augmenter encore l'efficacité et à optimiser la performance d'exécution de la logique applicative. Ces fonctions sont les suivantes :
Héritage de bean entity
L'héritage est un aspect clé du développement orienté objet ; il est pourtant absent de la spécification EJB.

L'utilisation de l'héritage permet au développeur de définir les zones, les relations et la logique métier dans une superclasse dont héritent toutes les sous-classes. Pour plus de détails sur l'utilisation de l'héritage avec WebSphere Application Server et les beans entity, consultez la section Héritage EJB de la documentation de Rational Studio Application Developer.

Règles de tentative d'accès
Les règles de tentative d'accès fournissent aux développeurs d'applications Java™EE (Java Platform, Enterprise Edition) un mécanisme grâce auquel ils peuvent indiquer comment une application entend interagir avec l'état essentiel des beans entity, afin que le mécanisme de persistance puisse effectuer les optimisations appropriées. Par exemple, s'il est acquis qu'un bean entity n'est pas mise à jour au cours d'une transaction, la gestion de la persistance est en mesure de relâcher son contrôle de la concurrence des accès, sans pour autant compromettre l'intégrité des données, en interdisant les opérations de mise à jour sur ce bean pendant toute la durée de la transaction.
Mise en cache des données entre transactions successives
La mise en cache des données entre transactions est une option configurable, définie par le déployeur du bean, qui peut grandement améliorer les performances. Elle concerne essentiellement les données qui ne changent pas souvent. L'option est connue sous le nom de Durée de vie en cache (propriété LifetimeInCache). Les données d'un bean entity configuré avec cette option sont stockées dans une cache jusqu'à ce que la durée de vie spécifiée soit écoulée. Toutes les demandes adressées au bean entity pendant la durée de vie spécifiée sont servies par les données en cache et n'entraînent donc pas l'exécution de requêtes sur le magasin de données sous-jacent. La durée de vie peut être exprimée soit comme le temps écoulé depuis que les données ont été extraites du magasin de données, soit sous forme de date/heure limite. La propriété LifetimeInCache peut avoir l'une des valeurs suivantes :
Off
Le paramètre LifetimeInCache est ignoré. Les beans de ce type sont simplement mis en cache dans une cache de portée transaction. Les données mises en cache pour cette instance ne sont pas valides une fois la transaction terminée.
ElapsedTime
La valeur du paramètre LifetimeInCache est ajoutée à l'heure en cours à la fin de la transaction (dans laquelle l'instance du bean est récupérée). Les données mises en cache pour cette instance ne sont pas valides une fois ce délai écoulé. La valeur du paramètre LifetimeInCache peut atteindre plusieurs minutes, heures, jours, etc.
ClockTime
La valeur de LifetimeInCache représente une heure particulière de la journée. Cette valeur est ajoutée à l'heure 0 (minuit) précédente ou suivante pour calculer une heure ultérieure, traitée ensuite comme valeur Temps écoulé. L'utilisation de ce paramètre vous permet de spécifier que toutes les instances de ce type de bean voient leurs données mises en cache invalidées à une heure spécifique, quel que soit le moment où les données ont été extraites.

L'utilisation de l'heure 0 (minuit) précédente ou suivante pour calculer une heure ultérieure dépend de la valeur de LifetimeInCache. Si la valeur de LifetimeInCache ajoutée à l'heure 0 précédente est antérieure à l'heure en cours, alors l'heure 0 suivante est utilisée.

Lorsque vous utilisez le paramètre ClockTime, la valeur de LifetimeInCache ne doit pas représenter plus de 24 heures. Si c'est le cas, le gestionnaire de la mémoire cache lui retire des incréments de 24 heures jusqu'à l'obtention d'une valeur inférieure ou égale à 24 heures. Pour invalider des données à minuit, affectez la valeur 0 au paramètre LifetimeInCache.

WeekTime
Ce paramètre est similaire à ClockTime, à ceci près que la valeur de LifetimeInCache est ajoutée au dimanche minuit précédent ou suivant (23h59 le samedi, plus 1 minute). Dans ce cas, la valeur LifetimeInCache peut représenter plus de 24 heures, mais pas plus de 7 jours.
Pour plus d'informations, voir les rubriques sur LifetimeInCache dans l'aide de l'outil d'assemblage.
Remarque :

Du fait que les données utilisées par un bean entity peuvent être chargées par des transactions antérieures, si vous configurez le bean en tant que LifeTimeInCache, le niveau d'isolement et le verrou de mise à jour (règles de tentative d'accès) définis pour le bean sont perdus pour la transaction en cours. Cela peut entraîner des problèmes d'intégrité des données si votre application utilise une logique permettant de calculer des informations à partir de données en lecture seule, puis d'enregistrer le résultat dans un autre bean. Par conséquent, il est important d'effectuer des contrôles de cohérence "read-read" afin de s'assurer que les données sont verrouillées correctement lorsqu'elles sont chargées à partir d'une mémoire cache ; si ce n'est pas le cas, les données sont mises à jour dans la base de données sans tenir compte du fait que les données sous-jacentes ont été modifiées, ce qui entraîne la perte des modifications antérieures. Pour plus d'informations, reportez-vous à la rubrique Configuration du contrôle de cohérence lecture-lecture à l'aide d'un outil d'assemblage.

Beans entity en lecture seule
Le fait de déclarer des beans entity comme étant en lecture seule peut potentiellement augmenter les améliorations de performances résultant de la mise en cache. Les deux fonctions sont basées sur le même principe : minimiser les surcoûts résultant du rechargement fréquent des beans entity à partir de données résidant dans la mémoire persistante. Lorsque vous désignez des beans entity comme étant en lecture seule, vous pouvez spécifier les conditions et les fréquences de rechargement en fonction des besoins de votre application.

Pour utiliser cette fonction, vous déclarez le type de bean comme étant accessible en lecture seule en sélectionnant un ensemble particulier d'options de mise en cache des beans, par le biais d'une liste de sélection dans l'outil d'assemblage. Pour plus de détails, voir la rubrique Configuration du contrôle de cohérence lecture-lecture à l'aide d'un outil d'assemblage.


Icône indiquant le type de rubrique Rubrique de référence



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rdat_cmppers
Nom du fichier : rdat_cmppers.html