Hibernate 3.0

-

Livres
334 pages
Lire un extrait
Obtenez un accès à la bibliothèque pour le consulter en ligne
En savoir plus

Description


Gestion optimale de la persistance dans les applications Java/J2EE



Standard de fait, Hibernate s'est imposé comme la solution idéale pour gérer le délicat problème de la persistance des objets Java/J2EE par mapping vers les bases de données relationnelles. Dans sa version 3, Hibernate fournit déjà une implémentation très avancée du futur standard de la persistance Java/J2EE : EJB 3.0 Persistence API.



Un livre pratique illustré d'une étude de cas détaillée



Résolument pratique, cet ouvrage illustre chacune des fonctionnalités d'Hibernate à travers une étude de cas déclinée au fil des chapitres. Il insiste tout particulièrement sur les aspects méthodologiques et sur les questions de performances : maîtrise des fichiers de mapping, gestion optimale des sessions Hibernate, interrogation performante de la base de données, outils de productivité apportés par Hibernate 3.0, configuration des pools de connexions et des caches de second niveau, etc.




  • Gestion de la persistance dans les applications Java/J2EE


  • Installation et premiers pas avec Hibernate


  • Présentation de l'étude de cas


  • Fichiers de mapping et référentiel de métadonnées


  • Techniques avancées de modélisation


  • Accès à la base de données et récupération d'objets


  • Création, modification et suppression d'objets : concourance et persistance transitive


  • Meilleures pratiques de gestion des sessions Hibernate


  • Utilisation conjointe de Struts et d'Hibernate


  • Nouveautés et fonctions avancées d'Hibernate 3.0


  • Outils complémentaires, configuration de pools de connexions et de caches de second niveau

Sujets

Informations

Publié par
Date de parution 07 juillet 2011
Nombre de visites sur la page 234
EAN13 9782212850383
Langue Français

Informations légales : prix de location à la page 0,0210 €. Cette information est donnée uniquement à titre indicatif conformément à la législation en vigueur.

Signaler un problème
Hibernate 3.0
Gestion optimale de la persistance dans les applications Java/J2EE
A n t h o n y P a t r i c i o
 
        
CHEZ LE MÊME ÉDITEUR
Développement Java/J2EE
K. DJAFAAR. –Eclipse et JBoss. Développement d’applications J2EE professionnelles, de la conception au déploiement N°11406, 2005, 656 pages + CD-Rom.
J.-P. RETAILLÉ. –Refactoring des applications Java/J2EE. N°11577, 2005, 390 pages.
J. MOLIÈRE. –Cahier du programmeur J2EE.Conception et déploiement J2EE. N°11574, 2005, 234 pages.
R. FLEURY. –Cahier du programmeurJava/XML. Méthodes et frameworks : Ant, Junit, Eclipse, Struts-Stxx, Cocoon, Axis, Xerces, Xalan, JDom, XIndice… N°11316, 2004, 228 pages.
E. PUYBARET. –Cahier du programmeur Java 1.4 et 5.0. N°11478, 2004, 378 pages.
J. WEAVER, K. MUKHAR, J. CRUME. –J2EE 1.4. N°11484, 2004, 662 pages.
J. GOODWILL. –Jakarta Struts. N°11231, 2003, 354 pages.
P. HARRISON, I. MCFARLAND. –Tomcat par la pratique. N°11270, 2003, 586 pages.
P.-Y. SAUMONT. –Le Guide du développeur Java 2. Meilleures pratiques de programmation avec Ant, JUnit et les design patterns. N°11275, 2003, 816 pages + CD-Rom.
L. DERUELLE.– Développement Java/J2EE avec JBuilder. N°11346, 2003, 726 pages + CD-Rom.
R. PAWLAK, J.-P. RETAILLÉ, L. SEINTURIER. –Programmation orientée aspect pour Java/J2EE. N°11408, 2004, 462 pages.
L. MAESANO, C. BERNARD, X. LEGALLES. –Services Web en J2EE et .NET. N°11067, 2003, 1088 pages.
E. ROMAN, S. AMBLER, T. JEWELL. –EJB fondamental. N°11088, 2002, 668 pages.
Ouvrages sur la modélisation UML
P.ROQUES, F. VALLÉE. –UML 2 en action. De l’analyse des besoins à la conception J2EE.e N°11462, 3 édition, 2004, 396 pages + poster (collection Architecte logiciel).
P. ROQUES. –UML 2 par la pratique. Cours et exercices.e N°11480, 3 édition 2004, 316 pages.
C. SOUTOU. –De UML à SQL.Conception de bases de données. N°11098, mai 2002, 450 pages.
 
        
              
                                   
ÉDITIONS EYROLLES 61, bd Saint-Germain 75240 Paris Cedex 05 www.editions-eyrolles.com
er Le code de la propriété intellectuelle du 1 juillet 1992 interdit en effet expressément la photocopie à usage collectif sans autorisation des ayants droit. Or, cette pratique s’est généralisée notamment dans les établissements d’enseignement, provoquant une baisse brutale des achats de livres, au point que la possibilité même pour les auteurs de créer des œuvres nouvelles et de les faire éditer correctement est aujourd’hui menacée. En application de la loi du 11 mars 1957, il est interdit de reproduire intégralement ou partiellement le présent ouvrage, sur quelque support que ce soit, sans autorisation de l’éditeur ou du Centre Français d’Exploitation du Droit de Copie, 20, rue des Grands-Augustins, 75006 Paris. © Groupe Eyrolles, 2005, ISBN : 2-212-11644-6
R
emerci
emen
t
s
Écrire un ouvrage n’est possible qu’avec une motivation forte. Mes premiers remercie-ments vont donc logiquement à la communauté Hibernate, qui m’a donné l’envie de partager davantage ma connaissance d’Hibernate.
Cet ouvrage, comme toute réalisation, n’aurait pu se faire seul. Je remercie Éric Sulpice, directeur éditorial d’Eyrolles, de m’avoir donné la possibilité de réaliser ce projet. Merci aussi à Olivier Salvatori pour sa patience, ses conseils experts sur la structure du livre et ses multiples relectures.
Merci à mes camarades de l’équipe Hibernate, Max Rydahl Andersen, Christian Bauer, Emmanuel Bernard, David Channon, Joshua Davis, Steve Ebersole, Michael Gloegl et Gavin King, pour leurs conseils et soutien pendant l’écriture de l’ouvrage et pour avoir offert à la communauté Java l’un des meilleurs outils de mapping objet-relationnel, si ce n’est le meilleur. Encore merci à Emmanuel Bernard pour son aide sur plusieurs des chapitres de l’ouvrage.
Enfin, merci à mon entourage proche, ma fiancée, ma famille et mes amis, pour leurs encouragements et soutien pendant ces derniers mois.
Table des matières
Remerciements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Avant-propos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . Objectifs de l’ouvrage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . Questions-réponses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Organisation de l’ouvrage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . À qui s’adresse l’ouvrage ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CHAPITRE1 Persistance et mapping objet-relationnel. . . . . . . . . . . . . . . . . . . . Historique de la persistance en Java. . . . . . . . . . . . . . . . . . . . . . . . . . . . Les EJB (Enterprise JavaBeans). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TopLink et JDO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hibernate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Vers une solution unique ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . En résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Principes de la persistance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . La persistance non transparente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . La persistance transparente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Le mapping objet-relationnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . En résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les autres solutions de persistance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tests de performance des outils de persistance . . . . . . . . . . . . . . . . . . . . . En résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Conclusion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
V XIII XIII XIV XV XV
1 1 2 2 3 5 7 8 9 11 13 14 14 16 19 19
VIII
Hibernate 3.0
CHAPITRE2 Classes persistantes et session Hibernate. . . . . . . . . . . . . . . . . . Installation d’Hibernate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . Les bibliothèques Hibernate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Le fichier de configuration globalehibernate.cfg.xml. . . . . . . . . . . . . . . . Les composants de l’architecture d’Hibernate (hors session) . . . . . . . . . . En résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les classes métier persistantes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemple de diagramme de classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Le cycle de vie d’un objet manipulé avec Hibernate . . . . . . . . . . . . . . . . . Entités et valeurs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . En résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . La session Hibernate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . Les actions de session. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . En résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Conclusion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . .
CHAPITRE3 Métadonnées et mapping des classes métier. . . . . . . . . . . . . . . Référentiel des métadonnées. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . hibernate-mapping, l’élément racine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . class, déclaration de classe persistante . . . . . . . . . . . . . . . . . . . . . . . . . . . . id. . . . . . . . . . . . . . . . . . . . . ., identité relationnelle de l’entité persistante discriminator, en relation avec l’héritage. . . . . . . . . . . . . . . . . . . . . . . . . . version et timestamp, versionnement des entités . . . . . . . . . . . . . . . . . . . . property, déclaration de propriétés persistantes . . . . . . . . . . . . . . . . . . . . . many-to-oneetone-to-one, associations vers une entité . . . . . . . . . . . . . . component, association vers une valeur . . . . . . . . . . . . . . . . . . . . . . . . . . . join, mapping de plusieurs tables à une seule classe . . . . . . . . . . . . . . . . . bag,set, list, map, array,. . . . . . . . . . . . . . . . . .mapping des collections En résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les fichiers de mapping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mapping détaillé de la classeTeam. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . En résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Conclusion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23 23 24 26 31 34 34 35 41 42 43 43 44 50 50
53 53 54 55 57 58 59 60 61 63 64 65 70 70 72 78 78
Table des matières
CHAPITRE4 Héritage, polymorphisme et associations ternaires. . . . . . . . . Stratégies de mapping d’héritage et polymorphisme. . . . . . . . . . . . . . Stratégie « une table par sous-classe » . . . . . . . . . . . . . . . . . . . . . . . . . . . . Stratégie « une table par hiérarchie de classe » . . . . . . . . . . . . . . . . . . . . . Stratégie « une table par sous-classe avec discriminateur ». . . . . . . . . . . . Stratégie « une table par classe concrète » . . . . . . . . . . . . . . . . . . . . . . . . . Stratégie « une table par classe concrète avec optionunion» . . . . . . . . . . En résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mise en œuvre d’une association bidirectionnelle. . . . . . . . . . . . . . . . . Associationone-to-many. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Associationmany-to-one. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Méthodologie d’association bidirectionnelle . . . . . . . . . . . . . . . . . . . . . . . Impacts sur l’extrémité inverse de l’association bidirectionnelle . . . . . . . En résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les autres types d’associations. . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . L’associationmany-to-many. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lecomposite-element. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . L’association ternaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . L’associationn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . -aire . En résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Conclusion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CHAPITRE5 Méthodes de récupération d’instances persistantes. . . . . . . . Le lazy loading, ou chargement à la demande. . . . . . . . . . . . . . . . . . . . Comportements par défaut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Paramétrage du chargementvial’attributfetch(Hibernate 3) . . . . . . . . . . Paramétrage du chargementviales attributslazy etouter-join. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Type de collection et lazy loading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . En résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les techniques de récupération d’objets. . . . . . . . . . . . . . . . . . . . . . . . .
HQL (Hibernate Query Language). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chargement des associations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . L’APICriteria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . Les requêtes SQL natives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
79 79 82 85 88 90 91 93 96 96 98 100 101 101 101 102 103 106 109 110 110
111 111 112 116
118 119 121 122 122 132 145 150
IX