HIBERNATE - Persistance relationnelle en Java standard
Suivant
HIBERNATE - Persistance relationnelle en Java standard
Documentation de référence d'Hibernate
3.2final
Table des matières
Préface
1. Introduction à Hibernate
1.1. Préface
1.2. Partie 1 - Première application Hibernate
1.2.1. La première classe
1.2.2. Le fichier de mapping
1.2.3. Configuration d'Hibernate
1.2.4. Construction avec Ant
1.2.5. Démarrage et aides
1.2.6. Charger et stocker des objets
1.3. Partie 2 - Mapper des associations
1.3.1. Mapper la classe Person
1.3.2. Une association unidirectionnelle basée sur Set
1.3.3. Travailler avec l'association
1.3.4. Collection de valeurs
1.3.5. Associations bidirectionnelles
1.3.6. Travailler avec des liens bidirectionnels
1.4. Part 3 - L'application web EventManager
1.4.1. Ecrire la servlet de base
1.4.2. Procéder et rendre
1.4.3. Déployer et tester
1.5. Résumé
2. Architecture
2.1. Généralités
2.2. Etats des instances
2.3. Intégration JMX
2.4. Support JCA
2.5. Sessions Contextuelles
3. Configuration
3.1. Configuration par programmation
3.2. Obtenir une SessionFactory
3.3. Connexions JDBC
3.4. Propriétés de configuration optionnelles
3.4.1. Dialectes SQL
3.4.2. Chargement par Jointure Ouverte
3.4.3. Flux binaires
3.4.4. Cache de second niveau et cache de requêtes
3.4.5. Substitution dans le langage de requêtage
3.4.6. Statistiques Hibernate
3.5. Tracer
3.6. Implémenter une NamingStrategy
3.7. Fichier de configuration XML
3.8. Intégration à un serveur d'application J2EE
3.8.1. Configuration de la stratégie transactionnelle
3.8.2. SessionFactory associée au JNDI
3.8.3. Association automatique de la Session à JTA
3.8.4. Déploiement JMX
4. Classes persistantes
4.1. Un exemple simple de POJO
4.1.1. Implémenter un constructeur sans argument
4.1.2. Fournir une propriété d'indentifiant (optionnel)
4.1.3. Favoriser les classes non finales (optionnel)
4.1.4. Déclarer les accesseurs et mutateurs des attributs persistants (optionnel)
4.2. Implémenter l'héritage
4.3. Implémenter equals() et hashCode()
4.4. Modèles dynamiques
4.5. Tuplizers
5. Mapping O/R basique
5.1. Déclaration de Mapping
5.1.1. Doctype
5.1.1.1. EntityResolver
5.1.2. hibernate-mapping
5.1.3. class
5.1.4. id
5.1.4.1. Generator
5.1.4.2. algorithme Hi/lo
5.1.4.3. UUID algorithm
5.1.4.4. Colonnes identifiantes et séquences
5.1.4.5. Identifiants assignés
5.1.4.6. Clefs primaires assignées par trigger
5.1.5. composite-id
5.1.6. discriminator
5.1.7. version (optionnel)
5.1.8. timestamp (optionnel)
5.1.9. property
5.1.10. many-to-one
5.1.11. one-to-one
5.1.12. natural-id
5.1.13. component, dynamic-component
5.1.14. properties
5.1.15. subclass
5.1.16. joined-subclass
5.1.17. union-subclass
5.1.18. join
5.1.19. key
5.1.20. éléments column et formula
5.1.21. import
5.1.22. any
5.2. Hibernate Types
5.2.1. Entités et valeurs
5.2.2. Basic value types
5.2.3. Types de valeur définis par l'utilisateur
5.3. Mapper une classe plus d'une fois
5.4. SQL quoted identifiers
5.5. alternatives Metadata
5.5.1. utilisation de XDoclet
5.5.2. Utilisation des annotations JDK 5.0
5.6. Propriétés générées
5.7. Objets auxiliaires de la base de données
6. Mapping des collections
6.1. Collections persistantes
6.2. Mapper une collection
6.2.1. Les clefs étrangères d'une collection
6.2.2. Les éléments d'une collection
6.2.3. Collections indexées
6.2.4. Collections de valeurs et associations plusieurs-vers-plusieurs
6.2.5. Association un-vers-plusieurs
6.3. Mappings de collection avancés
6.3.1. Collections triées
6.3.2. Associations bidirectionnelles
6.3.3. Associations bidirectionnelles avec des collections indexées
6.3.4. Associations ternaires
6.3.5. Utiliser un <idbag>
6.4. Exemples de collections
7. Mapper les associations
7.1. Introduction
7.2. Association unidirectionnelle
7.2.1. plusieurs à un
7.2.2. un à un
7.2.3. un à plusieurs
7.3. Associations unidirectionnelles avec tables de jointure
7.3.1. un à plusieurs
7.3.2. plusieurs à un
7.3.3. un à un
7.3.4. plusieurs à plusieurs
7.4. Associations bidirectionnelles
7.4.1. un à plusieurs / plusieurs à un
7.4.2. Un à un
7.5. Associations bidirectionnelles avec table de jointure
7.5.1. un à plusieurs / plusieurs à un
7.5.2. Un à un
7.5.3. plusieurs à plusieurs
7.6. Des mappings plus complexes
8. Mapping de composants
8.1. Objects dépendants
8.2. Collection d'objets dépendants
8.3. Utiliser les composants comme index de map
8.4. Utiliser un composant comme identifiant
8.5. Composant Dynamique
9. Mapping d'héritage de classe
9.1. Les trois stratégies
9.1.1. Une table par hiérarchie de classe
9.1.2. Une table par classe fille
9.1.3. Une table par classe fille, en utilisant un discriminant
9.1.4. Mélange d'une table par hiérarchie de classe avec une table par classe fille
9.1.5. Une table par classe concrète
9.1.6. Une table par classe concrète, en utilisant le polymorphisme implicite
9.1.7. Mélange du polymorphisme implicite avec d'autres mappings d'héritage
9.2. Limitations
10. Travailler avec des objets
10.1. États des objets Hibernate
10.2. Rendre des objets persistants
10.3. Chargement d'un objet
10.4. Requêtage
10.4.1. Exécution de requêtes
10.4.1.1. Itération de résultats
10.4.1.2. Requêtes qui retournent des tuples
10.4.1.3. Résultats scalaires
10.4.1.4. Lier des paramètres
10.4.1.5. Pagination
10.4.1.6. Itération "scrollable"
10.4.1.7. Externaliser des requêtes nommées
10.4.2. Filtrer des collections
10.4.3. Requêtes Criteria
10.4.4. Requêtes en SQL natif
10.5. Modifier des objets persistants
10.6. Modifier des objets détachés
10.7. Détection automatique d'un état
10.8. Suppression d'objets persistants
10.9. Réplication d'objets entre deux entrepôts de données
10.10. Flush de la session
10.11. Persistance transitive
10.12. Utilisation des méta-données
11. Transactions et accès concurrents
11.1. Gestion de session et délimitation de transactions
11.1.1. Unité de travail
11.1.2. Longue conversation
11.1.3. L'identité des objets
11.1.4. Problèmes communs
11.2. Démarcation des transactions
11.2.1. Environnement non managé
11.2.2. Utilisation de JTA
11.2.3. Gestion des exceptions
11.2.4. Timeout de transaction
11.3. Contrôle de consurrence optimiste
11.3.1. Gestion du versionnage au niveau applicatif
11.3.2. Les sessions longues et le versionnage automatique.
11.3.3. Les objets détachés et le versionnage automatique
11.3.4. Personnaliser le versionnage automatique
11.4. Verouillage pessimiste
11.5. Mode de libération de Connection
12. Les intercepteurs et les événements
12.1. Intercepteurs
12.2. Système d'événements
12.3. Sécurité déclarative d'Hibernate
13. Traitement par paquet
13.1. Insertions en paquet
13.2. Paquet de mises à jour
13.3. L'interface StatelessSession
13.4. Opérations de style DML
14. HQL: Langage de requêtage d'Hibernate
14.1. Sensibilité à la casse
14.2. La clause from
14.3. Associations et jointures
14.4. Formes de syntaxes pour les jointures
14.5. La clause select
14.6. Fonctions d'aggrégation
14.7. Requêtes polymorphiques
14.8. La clause where
14.9. Expressions
14.10. La clause order by
14.11. La clause group by
14.12. Sous-requêtes
14.13. Exemples HQL
14.14. Mise à jour et suppression
14.15. Trucs & Astuces
15. Requêtes par critères
15.1. Créer une instance de Criteria
15.2. Restriction du résultat
15.3. Trier les résultats
15.4. Associations
15.5. Peuplement d'associations de manière dynamique
15.6. Requêtes par l'exemple
15.7. Projections, agrégation et regroupement
15.8. Requêtes et sous-requêtes détachées
15.9. Requêtes par identifiant naturel
16. SQL natif
16.1. Utiliser une SQLQuery
16.1.1. Requêtes scalaires
16.1.2. Requêtes d'entités
16.1.3. Gérer les associations et collections
16.1.4. Retour d'entités multiples
16.1.4.1. Références d'alias et de propriété
16.1.5. Retour d'objet n'étant pas des entités
16.1.6. Gérer l'héritage
16.1.7. Paramètres
16.2. Requêtes SQL nommées
16.2.1. Utilisation de return-property pour spécifier explicitement les noms des colonnes/alias
16.2.2. Utilisation de procédures stockées pour les requêtes
16.2.2.1. Règles/limitations lors de l'utilisation des procédures stockées
16.3. SQL personnalisé pour créer, mettre à jour et effacer
16.4. SQL personnalisé pour le chargement
17. Filtrer les données
17.1. Filtres Hibernate
18. Mapping XML
18.1. Travailler avec des données XML
18.1.1. Spécifier le mapping XML et le mapping d'une classe ensemble
18.1.2. Spécifier seulement un mapping XML
18.2. Métadonnées du mapping XML
18.3. Manipuler des données XML
19. Améliorer les performances
19.1. Stratégies de chargement
19.1.1. Travailler avec des associations chargées tardivement
19.1.2. Personnalisation des stratégies de chargement
19.1.3. Proxys pour des associations vers un seul objet
19.1.4. Initialisation des collections et des proxys
19.1.5. Utiliser le chargement par lot
19.1.6. Utilisation du chargement par sous select
19.1.7. Utiliser le chargement tardif des propriétés
19.2. Le cache de second niveau
19.2.1. Mapping de Cache
19.2.2. Strategie : lecture seule
19.2.3. Stratégie : lecture/écriture
19.2.4. Stratégie : lecture/écriture non stricte
19.2.5. Stratégie : transactionelle
19.3. Gérer les caches
19.4. Le cache de requêtes
19.5. Comprendre les performances des Collections
19.5.1. Classification
19.5.2. Les lists, les maps, les idbags et les sets sont les collections les plus efficaces pour la mise à jour
19.5.3. Les Bags et les lists sont les plus efficaces pour les collections inverse
19.5.4. Suppression en un coup
19.6. Moniteur de performance
19.6.1. Suivi d'une SessionFactory
19.6.2. Métriques
20. Guide des outils
20.1. Génération automatique du schéma
20.1.1. Personnaliser le schéma
20.1.2. Exécuter l'outil
20.1.3. Propriétés
20.1.4. Utiliser Ant
20.1.5. Mises à jour incrémentales du schéma
20.1.6. Utiliser Ant pour des mises à jour de schéma par incrément
20.1.7. Utiliser Ant pour la validation du Schéma
21. Exemple : Père/Fils
21.1. Une note à propos des collections
21.2. un-vers-plusieurs bidirectionnel
21.3. Cycle de vie en cascade
21.4. Cascades et unsaved-value
21.5. Conclusion
22. Exemple : application Weblog
22.1. Classes persistantes
22.2. Mappings Hibernate
22.3. Code Hibernate
23. Exemple : quelques mappings
23.1. Employeur/Employé (Employer/Employee)
23.2. Auteur/Travail (Author/Work)
23.3. Client/Commande/Produit (Customer/Order/Product)
23.4. Divers mappings d'exemple
23.4.1. "Typed" one-to-one association
23.4.2. Exemple de clef composée
23.4.3. Many-to-many avec une clef composée partagée
23.4.4. Contenu basé sur une discrimination
23.4.5. Associations sur des clefs alternées
24. Meilleures pratiques