Indications de schémas de lecture anticipée

Les schémas de lecture anticipée permettent aux applications de réduire le nombre d'allers et retours dans la base de données en extrayant un ensemble de beans gérés par conteneur (CMP) pour la transaction dans une requête. La lecture anticipée implique l'activation des beans CMP demandés et la mise en cache des données des beans associés, ce qui garantit la présence des données pour les beans les plus utilisés par l'application. Une indication de lecture anticipée est une représentation des beans associés à lire. L'indication est associée à la méthode findByPrimaryKey du type de bean demandé, qui doit être un bean entity CMP conforme à la norme EJB 2.x.

Une indication de lecture anticipée prend la forme d'une chaîne de caractères. Il est inutile de fournir la chaîne ; l'assistant la génère automatiquement à partir des relations CMR (gérées par conteneur) définies pour le bean. Ci-dessous un exemple à titre d'information uniquement. Supposons qu'un type de bean CMP A dispose d'une méthode finder qui renvoie des instances du bean A. Une indication de lecture anticipée pour cette méthode est indiquées à l'aide de la notation suivante : RelB.RelC; RelD

Interprétez la notation précédente de la manière suivante :
  • Le type de bean A a une relation CMP avec des types de bean B et D.
  • Le type de bean B a une relation CMR avec un type de bean C.

Pour chaque bean de type A extrait de la base de données, les beans B et D directement liés et les beans C non directement liés sont également extraits. Dans l'ensemble de résultats, l'ordre des colonnes de données récupérées est le même que dans l'indication de lecture anticipée : bean A, bean B (ou vide), bean C (ou vide), bean D (ou vide). Pour les indications dans lesquelles la même relation figure plusieurs fois, par exemple, RelB.RelC;RelB.RelE, les colonnes de données d'un bean n'apparaissent qu'une fois dans l'ensemble de résultats, à la première occurrence du bean dans l'indication.

Les jetons représentés dans la notation, par exemple RelB, doivent être des noms de zone CMR pour les relations, tels que définis dans le descripteur de déploiement pour le bean. Dans les relations indirectes telles que RelB.RelC, RelC est un nom de zone CMR défini dans le descripteur de déploiement pour le type de bean B.

Une indication de lecture anticipée unique ne peut pas se référer au même type de bean dans plus d'une relation. Par exemple, si un bean Service a une relation employés avec le bean Employé et une relation directeur avec le bean Employé, l'indication de lecture anticipée ne peut indiquer à la fois employés et directeur.

Pour plus d'informations sur la définition d'indications de lecture anticipée, voir la documentation du produit Rational Application Developer.

Comportements d'exécution d'indication de lecture anticipée

Lors du développement d'indication de lecture anticipée, tenez compte des conseils et limitations suivants :
  • Les indications de lecture anticipées peuvent se révéler trop complexes à utiliser quand les chemins d'accès sont longs ou complexes. Les indications de lecture anticipée sur les mappages racines ou élémentaires requièrent une attention particulière. Ajoutez le nombre de tables impliquant potentiellement le pré-chargement d'une indication de lecture anticipée pour évaluer la complexité des opérations de jointure requises. Vérifiez si l'instruction obtenue constitue une requête optimisée sur la base de données cible.
  • Les indications de lecture anticipée ne fonctionnent pas dans les cas suivants :
    • Chemins de préchargement dans les relations M:N
    • Chemins de préchargement dans les relations récursives de beans ou dans les relations fk récursives
    • Situation où une indication de lecture anticipée s'applique à une instruction SELECT FOR UPDATE nécessitant une jointure de table dans une base de données qui ne prend pas en charge la combinaison de ces deux opérations.

      En général, le gestionnaire de persistance génère une instruction SELECT FOR UPDATE pour un bean uniquement si la tentative d'accès de celui-ci met en oeuvre des règles de verrouillage strictes. Les règles de verrouillage strict exigent des instructions SELECT FOR UPDATE dans les requêtes de sélection de base de données. Si la base de données requiert une opération de jointure pour exécuter l'instruction, il se peut que des exceptions soient générées par la plupart des bases de données interrogées car celles-ci n'acceptent pas les jointures de tables avec les instructions SELECT FOR UPDATE. Dans ce cas, WebSphere Application Server n'implémente pas l'indication de lecture anticipée. Si la base de données accepte les jointures de table avec cette instruction, WebSphere Application Server implémente les indications de lecture anticipée que vous configurez.

      [AIX Solaris HP-UX Linux Windows][z/OS]DB2 Universal Database V8.2 prend en charge les instructions SELECT FOR UPDATE avec des jointures de table.


Icône indiquant le type de rubrique Rubrique de concept



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=cejb_read
Nom du fichier : cejb_read.html