
Programmation JPA standard Java ORM
Description
Introduction au livre
La norme Java ORM JPA vous permet de stocker des objets directement dans une base de données sans écrire de requêtes SQL, et résout également la différence entre les bases de données objet et relationnelles.
Ce livre couvre tout ce qu'il faut savoir sur JPA, de la théorie de base et des principes fondamentaux aux méthodes d'optimisation des performances nécessaires à une utilisation pratique. Il explique également comment utiliser conjointement le framework Spring et JPA, et aborde la manière de développer efficacement des applications web Java en tirant parti de solutions open source innovantes telles que Spring Data JPA et QueryDSL. |
- Vous pouvez consulter un aperçu du contenu du livre.
Aperçu
indice
Chapitre 1. Introduction à la JPA
1.1 SQL et ses problèmes
1.1.1 Répéter, répéter et répéter
1.1.2 Développement dépendant de SQL
1.1.3 Dépannage avec JPA
1.2 Inadéquation des paradigmes
1.2.1 Héritage
1.2.2 Relations
1.2.3 Parcours du graphe d'objets
1.2.4 Comparaison
1.2.5 Résumé
1.3 Qu'est-ce que JPA ?
1.3.1 Introduction à JPA
1.3.2 Pourquoi utiliser JPA ?
1.4 Résumé
Chapitre 2. Premiers pas avec JPA
2.1 Installation d'Eclipse et importation du projet
2.2 Installation de la base de données H2
2.3 Bibliothèques et structure du projet
2.3.1 Gestion des bibliothèques avec Maven
2.4 Démarrage du mappage d'objets
2.5 Paramètres de persistence.xml
2.5.1 Dialectes de la base de données
2.6 Développement d'applications
2.6.1 Configuration du gestionnaire d'entités
2.6.2 Gestion des transactions
2.6.3 Logique métier
2.6.4 JPQL
2.7 Résumé
Chapitre 3.
Gestion de la persistance
3.1 Entity Manager Factory et Entity Manager
3.2 Qu’est-ce qu’un contexte de persistance ?
3.3 Cycle de vie de l'entité
3.4 Caractéristiques du contexte de persistance
3.4.1 Recherche d'entité
3.4.2 Immatriculation de l'entité
3.4.3 Entités de modification
3.4.4 Suppression d'une entité
3,5 chasses d'eau
3.5.1 Options du mode de rinçage
3.6 Semi-permanent
3.6.1 Rendre une entité semi-persistante : détacher()
3.6.2 Initialisation du contexte de persistance : clear()
3.6.3 Fermeture d'un contexte de persistance : close()
3.6.4 Caractéristiques de l'état semi-persistant
3.6.5 Fusion : fusionner()
3.7 Résumé
Chapitre 4.
Cartographie des entités
4.1 @Entité
4.2 @Table
4.3 Utilisation de différents mappages
4.4 Création automatique du schéma de base de données
4.5 Fonction de génération DDL
4.6 Configuration des touches par défaut
4.6.1 Stratégie d'affectation directe des clés primaires
4.6.2 Stratégie d'identité
4.6.3 Stratégie SÉQUENCE
4.6.4 TABLEAU Stratégie
4.6.5 Stratégie AUTO
4.6.6 Nettoyage du mappage de la clé primaire
4.7 Correspondance entre les champs et les colonnes : Référence
4.7.1 @Colonne
4.7.2 @Énuméré
4.7.3 @Temporal
4.7.4 @Lob
4.7.5 @Transient
4.7.6 @Accès
4.8 Résumé
Exemple pratique 1.
Analyse des besoins et cartographie de base
Analyse des besoins
Analyse du modèle de domaine
Conception de table
Conception et cartographie des entités
Les défis de la conception axée sur les données
Chapitre 5.
Principes de base du mappage d'associations
5.1 Associations unidirectionnelles
5.1.1 Associations d'objets purs
5.1.2 Relations entre les tableaux
5.1.3 Mappage objet-relationnel
5.1.4 @JoinColumn
5.1.5 @ManyToOne
5.2 Utilisation des relations
5.2.1 Sauvegarder
5.2.2 Vues
Correctif 5.2.3
5.2.4 Suppression des associations
5.2.5 Suppression des entités liées
5.3 Corrélation bidirectionnelle
5.3.1 Cartographie d'association bidirectionnelle
5.3.2 Requête de collection un-à-plusieurs
5.4 Propriétaire de la relation
5.4.1 Règles de mappage bidirectionnel : Propriétaire de l’association
5.4.2 Le propriétaire de la relation est l'endroit où se trouve la clé étrangère.
5.5 Stockage des associations bidirectionnelles
5.6 Remarques sur les associations bidirectionnelles
5.6.1 Associations bidirectionnelles qui prennent en compte même les objets purs
5.6.2 Méthodes de commodité pour les associations
5.6.3 Précautions à prendre lors de la rédaction de méthodes d'association simplifiées
5.7 Résumé
Exemple pratique 2.
Commencez à cartographier les relations
Cartographie des relations un-à-plusieurs et plusieurs-à-un
Parcours du graphe d'objets
Chapitre 6.
Cartographie de diverses relations
6.1 Relation plusieurs-à-un
6.1.1 Unidirectionnel plusieurs-à-un [N:1]
6.1.2 Bidirectionnel plusieurs-à-un [N:1, 1:N]
6.2 Relation un-à-plusieurs
6.2.1 Relation unidirectionnelle un-à-plusieurs [1:N]
6.2.2 Relation bidirectionnelle un-à-plusieurs [1:N, N:1]
6.3 En tête-à-tête [1:1]
6.3.1 Clés étrangères dans la table principale
6.3.2 Clés étrangères dans la table cible
6.4 Relation plusieurs-à-plusieurs [N:N]
6.4.1 Relation plusieurs-à-plusieurs : unidirectionnelle
6.4.2 Relation plusieurs-à-plusieurs : bidirectionnelle
6.4.3 Relation plusieurs-à-plusieurs : limites et solutions du mappage, à l’aide d’entités liées
6.4.4 Relation plusieurs-à-plusieurs : Utilisation d’une nouvelle clé primaire
6.4.5 Organisation des relations plusieurs-à-plusieurs
6.5 Résumé
Exemple pratique 3.
Cartographie de diverses relations
Cartographie individuelle
Correspondance plusieurs-à-plusieurs
Chapitre 7.
Cartographie avancée
7.1 Cartographie des relations d'héritage
7.1.1 Stratégie d'adhésion
7.1.2 Stratégie à table unique
7.1.3 Stratégie de table pour chaque classe d'implémentation
7.2 @MappedSuperclass
7.3 Cartographie des clés composites et identification des relations
7.3.1 Relations d'identification vs. relations non identitaires
7.3.2 Clés composites : Cartographie des relations non identifiantes
7.3.3 Clés composites : Identification des relations
7.3.4 Mise en œuvre avec des relations non identifiantes
7.3.5 Relation d'identification individuelle
7.3.6 Avantages et inconvénients de l'identification et de la désidentification des relations
7.4 Table de jointure
7.4.1 Table de jointure un-à-un
7.4.2 Table de jointure un-à-plusieurs
7.4.3 Table de jointure plusieurs-à-un
7.4.4 Table de jointure plusieurs-à-plusieurs
7.5 Association de plusieurs tables à une seule entité
7.6 Résumé
Exemple pratique 4.
Cartographie des relations d'héritage
Cartographie des relations d'héritage
@MappedSuperclass cartographie
Chapitre 8.
Gestion des relations et des mandats
8.1 Proxy
8.1.1 Principes de base des proxys
8.1.2 Proxies et identifiants
8.1.3 Vérification par proxy
8.2 Chargement immédiat et chargement différé
8.2.1 Chargement instantané
8.2.2 Chargement différé
8.2.3 Nettoyage du chargement anticipé et du chargement différé
8.3 Utilisation du chargement différé
8.3.1 Proxies et wrappers de collection
8.3.2 Stratégie de récupération de base JPA
8.3.3 Précautions lors de l'utilisation de FetchType.EAGER dans les collections
8.4 Transition de persistance - CASCADE
8.4.1 Transition de persistance : Sauvegarder
8.4.2 Transition de persistance : Supprimer
8.4.3 Types de CASCADE
8.5 Objets orphelins
8.6 Transition de persistance + Objets orphelins, cycle de vie
8.7 Résumé
Exemple pratique 5.
Gestion des relations
Définition d'une stratégie de récupération globale
Paramètres de transition de persistance
Chapitre 9.
type de valeur
9.1 Type par défaut
9.2 Types intégrés (types de valeurs composites)
9.2.1 Types intégrés et mappage des tables
9.2.2 Types et relations imbriqués
9.2.3 @AttributeOverride : Remplacement des attributs
9.2.4 Types incorporés et valeurs nulles
9.3.
types valeur et objets immuables
9.3.1 Référence de partage de type de valeur
9.3.2 Copie des types de valeurs
9.3.3 Objets immuables
9.4.
Comparaison des types de valeurs
9,5.
collection de types de valeurs
9.5.1 Utilisation des collections de types valeur
9.5.2 Contraintes sur les collections de types de valeurs
9.6 Résumé
Exemple pratique 6.
Correspondance des types de valeurs
Résumé d'exemples pratiques
Chapitre 10.
Langage de requête orienté objet
10.1 Introduction aux requêtes orientées objet
10.1.1 Introduction au JPQL
10.1.2 Introduction aux requêtes de critères
10.1.3 Introduction à QueryDSL
10.1.4 Introduction au SQL natif
10.1.5 Utilisation directe de JDBC, à l'aide d'un framework de mappage SQL comme MyBatis
10.2 JPQL
10.2.1 Grammaire de base et API de requête
10.2.2 Liaison des paramètres
10.2.3 Projection
10.2.4 API de pagination
10.2.5 Ensembles et tri
10.2.6 JPQL Join
10.2.7 Récupérer Joindre
10.2.8 Expressions de chemin
10.2.9 Sous-requêtes
10.2.10 Expressions conditionnelles
10.2.11 Requêtes polymorphes
10.2.12 Appel de fonctions définies par l'utilisateur (JPA 2.1)
10.2.13 Autre résumé
10.2.14 Utilisation directe par l'entité
10.2.15 Requêtes nommées : Requêtes statiques
10.3 Critères
10.3.1 Principes de base des critères
10.3.2 Création d'une requête de critères
10.3.3 Vues
Ensemble 10.3.4
10.3.5 Tri
10.3.6 Rejoindre
10.3.7 Sous-requêtes
10.3.8 IN formule
10.3.9 Expression CASE
10.3.10 Définition du paramètre
10.3.11 Appels de fonctions natives
10.3.12 Requêtes dynamiques
10.3.13 Résumé des fonctions
10.3.14 API du métamodèle Criteria
10.4 QueryDSL
10.4.1 Paramètres QueryDSL
10.4.2 Démarrage
10.4.3 Requête de condition de recherche
10.4.4 Vérification des résultats
10.4.5 Pagination et tri
Groupe 10.4.6
10.4.7 Rejoignez-nous
10.4.8 Sous-requêtes
10.4.9 Projection et retour des résultats
10.4.10 Modifier, supprimer une requête par lots
10.4.11 Requêtes dynamiques
10.4.12 Délégation de méthode
Résumé de QueryDSL du 10 avril 2013
SQL natif 10.5
10.5.1 Utilisation de SQL natif
10.5.2 SQL natif nommé
10.5.3 SQL natif défini en XML
Résumé SQL natif 10.5.4
10.5.5 Procédures stockées (JPA 2.1)
10.6 Requêtes orientées objet avancées
10.6.1 Opérations en vrac
10.6.2 Contextes de persistance et JPQL
10.6.3 JPQL et mode Flush
10.7 Résumé
Chapitre 11.
développement d'applications Web
11.1 Paramètres du projet
11.1.1 Structure du projet
11.1.2 Gestion des bibliothèques avec Maven
11.1.3 Configuration du framework Spring
11.2 Modèle de domaine et conception de tables
11.2.1 Analyse des exigences
11.2.2 Conception du modèle de domaine
11.2.3 Conception de table
11.2.4 Gestion des relations
11.2.5 Classes d'entités
11.3 Mise en œuvre de l'application
11.3.1 Méthodes de développement
11.3.2 Fonctions membres
11.3.3 Fonctionnalités du produit
11.3.4 Fonction de commande
11.3.5 Implémentation de la couche Web
11.4 Résumé
Chapitre 12.
Données Spring JPA
12.1 Introduction à Spring Data JPA
12.1.1 Projet de données Spring
12.2 Configuration de Spring Data JPA
12.3 Fonctionnalités d'interface communes
12.4 Fonctions de méthode de requête
12.4.1 Création de requêtes par nom de méthode
12.4.2 JPA NamedQuery
12.4.3 @Query, définition des requêtes dans les méthodes du dépôt
12.4.4 Liaison des paramètres
12.4.5 Requêtes de modification en masse
12.4.6 Type de retour
12.4.7 Pagination et tri
12.4.8 Indice
12.4.9 Verrouillage
Spécifications 12.5
12.6 Mise en œuvre d'un référentiel personnalisé
12.7 Extensions Web
12.7.1 Paramètres
12.7.2 Fonction de conversion de classe de domaine
12.7.3 Fonctions de pagination et de tri
12.8 Implémentations utilisées par Spring Data JPA
12.9 S'applique aux magasins JPA
12.9.1 Préférences
12.9.2 Refactorisation du dépôt
12.9.3 Application de spécification
12.10 Intégration de Spring Data JPA et QueryDSL
12.10.1 Utilisation de QueryDslPredicateExecutor
12.10.3 Utilisation de QueryDslRepositorySupport
Résumé du 12.11
Chapitre 13.
Applications Web et gestion de la persistance
13.1 Contexte de persistance à l'échelle de la transaction
13.1.1 Stratégies de base du conteneur à ressort
13.2 État semi-persistant et chargement différé
13.2.1 Stratégie de récupération globale modifiée
13.2.2 JPQL Fetch Join
13.2.3 Forcer la réinitialisation
13.2.4 Ajout d'une couche FAÇADE
13.2.5 Problèmes liés à l'état semi-persistant et au chargement différé
13.3 OSIV
13.3.1 OSIV antérieur : Transactions par requête
13.3.2 Spring OSIV : Transactions de la couche métier
13.3.3 Résumé OSIV
13.4 Hiérarchie trop stricte
13.5 Résumé
Chapitre 14.
Collections et modules complémentaires
14.1 Collection
14.1.1 JPA et Collections
14.1.2 Collection, Liste
Ensemble 14.1.3
14.1.4 Liste + @OrderColumn
14.1.5 @CommanderPar
14.2 @Convertisseur
14.2.1 Paramètres globaux
14.3 Auditeur
14.3.1 Types d'événements
14.3.2 Emplacement de l'application de l'événement
14.4 Graphe d'entités
14.4.1 Graphique d'entités nommées
14.4.2 Utilisation des graphes d'entités dans em.find()
14.4.3 sous-graphique
14.4.4 Utilisation des graphes d'entités dans JPQL
14.4.5 Graphe d'entités dynamique
14.4.6 Nettoyage du graphe d'entités
14.5 Résumé
Chapitre 15.
Sujets avancés et optimisation des performances
15.1 Gestion des exceptions
15.1.1 Résumé des exceptions à la norme JPA
15.1.2 Conversion des exceptions JPA dans le framework Spring
15.1.3 Application des convertisseurs d'exceptions JPA au framework Spring
15.1.4 Remarques sur l'annulation des transactions
15.2 Comparaison des entités
15.2.1 Comparaison d'entités lorsque le contexte de persistance est identique
15.2.2 Comparaison d'entités lorsque les contextes de persistance sont différents
15.3 Sujets avancés relatifs aux proxys
15.3.1 Contextes et indicateurs de persistance
15.3.2 Comparaison des types de proxy
15.3.3 Comparaison de l'équivalence des proxys
15.3.4 Héritage et procurations
15.4 Optimisation des performances
15.4.1 Problème N+1
15.4.2 Optimisation des performances des requêtes en lecture seule
15.4.3 Traitement par lots
15.4.4 Utilisation des indications de requêtes SQL
15.4.5 Optimisations de la latence d'écriture et des performances prenant en charge les transactions
15.5 Résumé
Chapitre 16.
Transactions, verrous et cache secondaire
16.1 Transactions et verrous
16.1.1 Transactions et niveaux d'isolation
16.1.2 Principes de base du verrouillage optimiste et pessimiste
16.1.3 @Version
16.1.4 Utilisation des verrous JPA
16.1.5 Verrouillage optimiste JPA
16.1.6 Verrouillage pessimiste JPA
16.1.7 Verrouillage pessimiste et délais d'attente
16.2 Cache secondaire
16.2.1 Cache primaire et secondaire
16.2.2 Fonctionnalité de cache de second niveau JPA
16.2.3 Application d'Hibernate et d'EHCACHE
16.3 Résumé
1.1 SQL et ses problèmes
1.1.1 Répéter, répéter et répéter
1.1.2 Développement dépendant de SQL
1.1.3 Dépannage avec JPA
1.2 Inadéquation des paradigmes
1.2.1 Héritage
1.2.2 Relations
1.2.3 Parcours du graphe d'objets
1.2.4 Comparaison
1.2.5 Résumé
1.3 Qu'est-ce que JPA ?
1.3.1 Introduction à JPA
1.3.2 Pourquoi utiliser JPA ?
1.4 Résumé
Chapitre 2. Premiers pas avec JPA
2.1 Installation d'Eclipse et importation du projet
2.2 Installation de la base de données H2
2.3 Bibliothèques et structure du projet
2.3.1 Gestion des bibliothèques avec Maven
2.4 Démarrage du mappage d'objets
2.5 Paramètres de persistence.xml
2.5.1 Dialectes de la base de données
2.6 Développement d'applications
2.6.1 Configuration du gestionnaire d'entités
2.6.2 Gestion des transactions
2.6.3 Logique métier
2.6.4 JPQL
2.7 Résumé
Chapitre 3.
Gestion de la persistance
3.1 Entity Manager Factory et Entity Manager
3.2 Qu’est-ce qu’un contexte de persistance ?
3.3 Cycle de vie de l'entité
3.4 Caractéristiques du contexte de persistance
3.4.1 Recherche d'entité
3.4.2 Immatriculation de l'entité
3.4.3 Entités de modification
3.4.4 Suppression d'une entité
3,5 chasses d'eau
3.5.1 Options du mode de rinçage
3.6 Semi-permanent
3.6.1 Rendre une entité semi-persistante : détacher()
3.6.2 Initialisation du contexte de persistance : clear()
3.6.3 Fermeture d'un contexte de persistance : close()
3.6.4 Caractéristiques de l'état semi-persistant
3.6.5 Fusion : fusionner()
3.7 Résumé
Chapitre 4.
Cartographie des entités
4.1 @Entité
4.2 @Table
4.3 Utilisation de différents mappages
4.4 Création automatique du schéma de base de données
4.5 Fonction de génération DDL
4.6 Configuration des touches par défaut
4.6.1 Stratégie d'affectation directe des clés primaires
4.6.2 Stratégie d'identité
4.6.3 Stratégie SÉQUENCE
4.6.4 TABLEAU Stratégie
4.6.5 Stratégie AUTO
4.6.6 Nettoyage du mappage de la clé primaire
4.7 Correspondance entre les champs et les colonnes : Référence
4.7.1 @Colonne
4.7.2 @Énuméré
4.7.3 @Temporal
4.7.4 @Lob
4.7.5 @Transient
4.7.6 @Accès
4.8 Résumé
Exemple pratique 1.
Analyse des besoins et cartographie de base
Analyse des besoins
Analyse du modèle de domaine
Conception de table
Conception et cartographie des entités
Les défis de la conception axée sur les données
Chapitre 5.
Principes de base du mappage d'associations
5.1 Associations unidirectionnelles
5.1.1 Associations d'objets purs
5.1.2 Relations entre les tableaux
5.1.3 Mappage objet-relationnel
5.1.4 @JoinColumn
5.1.5 @ManyToOne
5.2 Utilisation des relations
5.2.1 Sauvegarder
5.2.2 Vues
Correctif 5.2.3
5.2.4 Suppression des associations
5.2.5 Suppression des entités liées
5.3 Corrélation bidirectionnelle
5.3.1 Cartographie d'association bidirectionnelle
5.3.2 Requête de collection un-à-plusieurs
5.4 Propriétaire de la relation
5.4.1 Règles de mappage bidirectionnel : Propriétaire de l’association
5.4.2 Le propriétaire de la relation est l'endroit où se trouve la clé étrangère.
5.5 Stockage des associations bidirectionnelles
5.6 Remarques sur les associations bidirectionnelles
5.6.1 Associations bidirectionnelles qui prennent en compte même les objets purs
5.6.2 Méthodes de commodité pour les associations
5.6.3 Précautions à prendre lors de la rédaction de méthodes d'association simplifiées
5.7 Résumé
Exemple pratique 2.
Commencez à cartographier les relations
Cartographie des relations un-à-plusieurs et plusieurs-à-un
Parcours du graphe d'objets
Chapitre 6.
Cartographie de diverses relations
6.1 Relation plusieurs-à-un
6.1.1 Unidirectionnel plusieurs-à-un [N:1]
6.1.2 Bidirectionnel plusieurs-à-un [N:1, 1:N]
6.2 Relation un-à-plusieurs
6.2.1 Relation unidirectionnelle un-à-plusieurs [1:N]
6.2.2 Relation bidirectionnelle un-à-plusieurs [1:N, N:1]
6.3 En tête-à-tête [1:1]
6.3.1 Clés étrangères dans la table principale
6.3.2 Clés étrangères dans la table cible
6.4 Relation plusieurs-à-plusieurs [N:N]
6.4.1 Relation plusieurs-à-plusieurs : unidirectionnelle
6.4.2 Relation plusieurs-à-plusieurs : bidirectionnelle
6.4.3 Relation plusieurs-à-plusieurs : limites et solutions du mappage, à l’aide d’entités liées
6.4.4 Relation plusieurs-à-plusieurs : Utilisation d’une nouvelle clé primaire
6.4.5 Organisation des relations plusieurs-à-plusieurs
6.5 Résumé
Exemple pratique 3.
Cartographie de diverses relations
Cartographie individuelle
Correspondance plusieurs-à-plusieurs
Chapitre 7.
Cartographie avancée
7.1 Cartographie des relations d'héritage
7.1.1 Stratégie d'adhésion
7.1.2 Stratégie à table unique
7.1.3 Stratégie de table pour chaque classe d'implémentation
7.2 @MappedSuperclass
7.3 Cartographie des clés composites et identification des relations
7.3.1 Relations d'identification vs. relations non identitaires
7.3.2 Clés composites : Cartographie des relations non identifiantes
7.3.3 Clés composites : Identification des relations
7.3.4 Mise en œuvre avec des relations non identifiantes
7.3.5 Relation d'identification individuelle
7.3.6 Avantages et inconvénients de l'identification et de la désidentification des relations
7.4 Table de jointure
7.4.1 Table de jointure un-à-un
7.4.2 Table de jointure un-à-plusieurs
7.4.3 Table de jointure plusieurs-à-un
7.4.4 Table de jointure plusieurs-à-plusieurs
7.5 Association de plusieurs tables à une seule entité
7.6 Résumé
Exemple pratique 4.
Cartographie des relations d'héritage
Cartographie des relations d'héritage
@MappedSuperclass cartographie
Chapitre 8.
Gestion des relations et des mandats
8.1 Proxy
8.1.1 Principes de base des proxys
8.1.2 Proxies et identifiants
8.1.3 Vérification par proxy
8.2 Chargement immédiat et chargement différé
8.2.1 Chargement instantané
8.2.2 Chargement différé
8.2.3 Nettoyage du chargement anticipé et du chargement différé
8.3 Utilisation du chargement différé
8.3.1 Proxies et wrappers de collection
8.3.2 Stratégie de récupération de base JPA
8.3.3 Précautions lors de l'utilisation de FetchType.EAGER dans les collections
8.4 Transition de persistance - CASCADE
8.4.1 Transition de persistance : Sauvegarder
8.4.2 Transition de persistance : Supprimer
8.4.3 Types de CASCADE
8.5 Objets orphelins
8.6 Transition de persistance + Objets orphelins, cycle de vie
8.7 Résumé
Exemple pratique 5.
Gestion des relations
Définition d'une stratégie de récupération globale
Paramètres de transition de persistance
Chapitre 9.
type de valeur
9.1 Type par défaut
9.2 Types intégrés (types de valeurs composites)
9.2.1 Types intégrés et mappage des tables
9.2.2 Types et relations imbriqués
9.2.3 @AttributeOverride : Remplacement des attributs
9.2.4 Types incorporés et valeurs nulles
9.3.
types valeur et objets immuables
9.3.1 Référence de partage de type de valeur
9.3.2 Copie des types de valeurs
9.3.3 Objets immuables
9.4.
Comparaison des types de valeurs
9,5.
collection de types de valeurs
9.5.1 Utilisation des collections de types valeur
9.5.2 Contraintes sur les collections de types de valeurs
9.6 Résumé
Exemple pratique 6.
Correspondance des types de valeurs
Résumé d'exemples pratiques
Chapitre 10.
Langage de requête orienté objet
10.1 Introduction aux requêtes orientées objet
10.1.1 Introduction au JPQL
10.1.2 Introduction aux requêtes de critères
10.1.3 Introduction à QueryDSL
10.1.4 Introduction au SQL natif
10.1.5 Utilisation directe de JDBC, à l'aide d'un framework de mappage SQL comme MyBatis
10.2 JPQL
10.2.1 Grammaire de base et API de requête
10.2.2 Liaison des paramètres
10.2.3 Projection
10.2.4 API de pagination
10.2.5 Ensembles et tri
10.2.6 JPQL Join
10.2.7 Récupérer Joindre
10.2.8 Expressions de chemin
10.2.9 Sous-requêtes
10.2.10 Expressions conditionnelles
10.2.11 Requêtes polymorphes
10.2.12 Appel de fonctions définies par l'utilisateur (JPA 2.1)
10.2.13 Autre résumé
10.2.14 Utilisation directe par l'entité
10.2.15 Requêtes nommées : Requêtes statiques
10.3 Critères
10.3.1 Principes de base des critères
10.3.2 Création d'une requête de critères
10.3.3 Vues
Ensemble 10.3.4
10.3.5 Tri
10.3.6 Rejoindre
10.3.7 Sous-requêtes
10.3.8 IN formule
10.3.9 Expression CASE
10.3.10 Définition du paramètre
10.3.11 Appels de fonctions natives
10.3.12 Requêtes dynamiques
10.3.13 Résumé des fonctions
10.3.14 API du métamodèle Criteria
10.4 QueryDSL
10.4.1 Paramètres QueryDSL
10.4.2 Démarrage
10.4.3 Requête de condition de recherche
10.4.4 Vérification des résultats
10.4.5 Pagination et tri
Groupe 10.4.6
10.4.7 Rejoignez-nous
10.4.8 Sous-requêtes
10.4.9 Projection et retour des résultats
10.4.10 Modifier, supprimer une requête par lots
10.4.11 Requêtes dynamiques
10.4.12 Délégation de méthode
Résumé de QueryDSL du 10 avril 2013
SQL natif 10.5
10.5.1 Utilisation de SQL natif
10.5.2 SQL natif nommé
10.5.3 SQL natif défini en XML
Résumé SQL natif 10.5.4
10.5.5 Procédures stockées (JPA 2.1)
10.6 Requêtes orientées objet avancées
10.6.1 Opérations en vrac
10.6.2 Contextes de persistance et JPQL
10.6.3 JPQL et mode Flush
10.7 Résumé
Chapitre 11.
développement d'applications Web
11.1 Paramètres du projet
11.1.1 Structure du projet
11.1.2 Gestion des bibliothèques avec Maven
11.1.3 Configuration du framework Spring
11.2 Modèle de domaine et conception de tables
11.2.1 Analyse des exigences
11.2.2 Conception du modèle de domaine
11.2.3 Conception de table
11.2.4 Gestion des relations
11.2.5 Classes d'entités
11.3 Mise en œuvre de l'application
11.3.1 Méthodes de développement
11.3.2 Fonctions membres
11.3.3 Fonctionnalités du produit
11.3.4 Fonction de commande
11.3.5 Implémentation de la couche Web
11.4 Résumé
Chapitre 12.
Données Spring JPA
12.1 Introduction à Spring Data JPA
12.1.1 Projet de données Spring
12.2 Configuration de Spring Data JPA
12.3 Fonctionnalités d'interface communes
12.4 Fonctions de méthode de requête
12.4.1 Création de requêtes par nom de méthode
12.4.2 JPA NamedQuery
12.4.3 @Query, définition des requêtes dans les méthodes du dépôt
12.4.4 Liaison des paramètres
12.4.5 Requêtes de modification en masse
12.4.6 Type de retour
12.4.7 Pagination et tri
12.4.8 Indice
12.4.9 Verrouillage
Spécifications 12.5
12.6 Mise en œuvre d'un référentiel personnalisé
12.7 Extensions Web
12.7.1 Paramètres
12.7.2 Fonction de conversion de classe de domaine
12.7.3 Fonctions de pagination et de tri
12.8 Implémentations utilisées par Spring Data JPA
12.9 S'applique aux magasins JPA
12.9.1 Préférences
12.9.2 Refactorisation du dépôt
12.9.3 Application de spécification
12.10 Intégration de Spring Data JPA et QueryDSL
12.10.1 Utilisation de QueryDslPredicateExecutor
12.10.3 Utilisation de QueryDslRepositorySupport
Résumé du 12.11
Chapitre 13.
Applications Web et gestion de la persistance
13.1 Contexte de persistance à l'échelle de la transaction
13.1.1 Stratégies de base du conteneur à ressort
13.2 État semi-persistant et chargement différé
13.2.1 Stratégie de récupération globale modifiée
13.2.2 JPQL Fetch Join
13.2.3 Forcer la réinitialisation
13.2.4 Ajout d'une couche FAÇADE
13.2.5 Problèmes liés à l'état semi-persistant et au chargement différé
13.3 OSIV
13.3.1 OSIV antérieur : Transactions par requête
13.3.2 Spring OSIV : Transactions de la couche métier
13.3.3 Résumé OSIV
13.4 Hiérarchie trop stricte
13.5 Résumé
Chapitre 14.
Collections et modules complémentaires
14.1 Collection
14.1.1 JPA et Collections
14.1.2 Collection, Liste
Ensemble 14.1.3
14.1.4 Liste + @OrderColumn
14.1.5 @CommanderPar
14.2 @Convertisseur
14.2.1 Paramètres globaux
14.3 Auditeur
14.3.1 Types d'événements
14.3.2 Emplacement de l'application de l'événement
14.4 Graphe d'entités
14.4.1 Graphique d'entités nommées
14.4.2 Utilisation des graphes d'entités dans em.find()
14.4.3 sous-graphique
14.4.4 Utilisation des graphes d'entités dans JPQL
14.4.5 Graphe d'entités dynamique
14.4.6 Nettoyage du graphe d'entités
14.5 Résumé
Chapitre 15.
Sujets avancés et optimisation des performances
15.1 Gestion des exceptions
15.1.1 Résumé des exceptions à la norme JPA
15.1.2 Conversion des exceptions JPA dans le framework Spring
15.1.3 Application des convertisseurs d'exceptions JPA au framework Spring
15.1.4 Remarques sur l'annulation des transactions
15.2 Comparaison des entités
15.2.1 Comparaison d'entités lorsque le contexte de persistance est identique
15.2.2 Comparaison d'entités lorsque les contextes de persistance sont différents
15.3 Sujets avancés relatifs aux proxys
15.3.1 Contextes et indicateurs de persistance
15.3.2 Comparaison des types de proxy
15.3.3 Comparaison de l'équivalence des proxys
15.3.4 Héritage et procurations
15.4 Optimisation des performances
15.4.1 Problème N+1
15.4.2 Optimisation des performances des requêtes en lecture seule
15.4.3 Traitement par lots
15.4.4 Utilisation des indications de requêtes SQL
15.4.5 Optimisations de la latence d'écriture et des performances prenant en charge les transactions
15.5 Résumé
Chapitre 16.
Transactions, verrous et cache secondaire
16.1 Transactions et verrous
16.1.1 Transactions et niveaux d'isolation
16.1.2 Principes de base du verrouillage optimiste et pessimiste
16.1.3 @Version
16.1.4 Utilisation des verrous JPA
16.1.5 Verrouillage optimiste JPA
16.1.6 Verrouillage pessimiste JPA
16.1.7 Verrouillage pessimiste et délais d'attente
16.2 Cache secondaire
16.2.1 Cache primaire et secondaire
16.2.2 Fonctionnalité de cache de second niveau JPA
16.2.3 Application d'Hibernate et d'EHCACHE
16.3 Résumé
Avis de l'éditeur
★ Ce que ce livre aborde ★
■ Théorie de base et principes fondamentaux de l'analyse psychodynamique japonaise (JPA)
■ Explique le processus de conception d'un modèle de domaine à l'aide de JPA avec des exemples.
■ Description de divers langages de requêtes orientés objet
■ Comment développer des applications web en utilisant conjointement JPA et Spring Framework
■ Introduction et utilisation de Spring Data JPA et QueryDSL
■ Différentes manières d'optimiser les performances lors de l'utilisation pratique de JPA
★ Public cible de ce livre ★
Ce livre s'adresse à tous les développeurs Java qui souhaitent développer des applications d'entreprise utilisant JPA.
Pour comprendre le contenu de ce livre, vous devez posséder certaines connaissances du langage Java, de la programmation de bases de données utilisant JDBC, de la programmation orientée objet et des bases de données relationnelles.
De plus, la partie 3 requiert des connaissances de base en développement web et du framework Spring, ainsi que la capacité à utiliser JUnit.
L'exécution de l'exemple de code nécessite également une certaine connaissance de Maven.
★ Structure de ce livre ★
JPA peut être globalement divisé en une partie conception qui traite de la manière de mapper les objets et les tables, et une partie qui utilise effectivement le modèle conçu.
Dans la première partie du livre, vous apprendrez les théories de base et les méthodes de conception, et dans la seconde partie, vous développerez de véritables applications Web utilisant JPA en vous basant sur les théories que vous aurez apprises.
Ce livre est divisé en quatre grandes parties.
Les chapitres 1 à 9 sont théoriques.
Apprenez à mapper les objets et les tables, ainsi que les fonctionnalités de base de JPA.
Les chapitres 4 à 9 proposent à la fin de chaque chapitre des exemples pratiques qui permettent de concevoir progressivement un modèle de domaine, vous permettant ainsi d'appliquer concrètement ce que vous avez appris.
Le chapitre 10 est consacré aux langages de requêtes orientés objet. Nous y explorerons tous les aspects, depuis JPQL (Java Persistence Query Language), le langage de requêtes orienté objet fourni par JPA, jusqu'au SQL natif, qui permet d'écrire directement des requêtes SQL.
Les chapitres 11 et 12 sont des guides pratiques pour l'utilisation de JPA en pratique.
Apprenez à développer des applications web à l'aide du framework Spring et de JPA, et découvrez également des outils open source innovants tels que Spring Data JPA et QueryDSL.
Les chapitres 13 à 16 couvrent divers sujets avancés en JPA, notamment les transactions, les verrous, les caches et les optimisations de performances.
★ Conférence en ligne ★
Jusqu'à présent, JPA a été introduit dans divers projets pratiques.
J'ai conçu et développé des systèmes allant de simples services web à des systèmes de commande, de paiement et de règlement gérant des milliards de transactions, le tout avec JPA. Si l'implémentation initiale de JPA dans mon activité a représenté un certain défi, elle a considérablement amélioré la productivité du développement et la maintenance, me permettant ainsi de consacrer plus de temps à la qualité du code et aux tests.
Surtout, les collègues qui avaient utilisé JPA ne voulaient pas revenir en arrière.
Cependant, de nombreuses difficultés sont apparues en raison du manque de données nationales sur la JPA.
J'ai donc écrit ce livre moi-même en 2015.
Nous proposons des cours en ligne payants qui peuvent être visionnés en complément du livre.
Après la publication du livre, j'ai donné des conférences dans de nombreuses entreprises qui utilisent ou prévoient d'introduire JPA, allant des entreprises de commerce électronique comme Naver et Kakao aux entreprises de commerce électronique comme Woowa Brothers et 11st.
Après avoir constaté, grâce à des cours magistraux, que les développeurs parvenaient plus facilement à comprendre des passages difficiles à appréhender dans les livres, nous avons mis en place un cours en ligne.
À titre de référence, le cours utilise les dernières versions de Spring Boot et de JPA, et est facile à suivre grâce au code fourni.
Et nous nous sommes davantage concentrés sur la transmission d'un savoir-faire pratique.
J'espère que vous aussi pourrez utiliser JPA en toute confiance dans votre travail.
Vous pouvez suivre le cours en ligne en cliquant sur le lien suivant.
■ Lien vers le cours : https://www.inflearn.com/roadmaps/149
■ Liste des cours en ligne
Programmation JPA standard en Java ORM - Notions de base : https://www.inflearn.com/course/ORM-JPA-Basic
Utilisation concrète de Spring Boot et JPA 1 - Développement d'applications web : https://www.inflearn.com/course/springboot-jpa-utilization-1
Utilisation concrète de Spring Boot et JPA 2 - Développement d'API et optimisation des performances : https://www.inflearn.com/course/springboot-jpa-api-development-performance-optimization#
Entraînez-vous ! Spring Data JPA : https://www.inflearn.com/course/spring-data-jpa-practice
Entraînez-vous ! Querydsl : https://www.inflearn.com/course/Querydsl-Practice
★ Note de l'auteur ★
Je me souviens encore de la surprise que j'ai ressentie lorsque j'ai découvert JPA.
D'innombrables lignes de code CRUD et instructions SQL que j'avais écrites pour gérer des objets dans des bases de données relationnelles me traversèrent l'esprit.
C'était comme tomber nez à nez avec un tracteur dernier cri en pleine campagne, en train de planter des plants de riz.
Stocker des objets dans une base de données relationnelle peut s'avérer long et nécessiter beaucoup de code.
Des tâches simples comme la conversion d'un objet en SQL aux tâches complexes comme le stockage de la structure d'héritage de l'objet dans une table, les développeurs doivent écrire d'innombrables lignes de code de mappage et requêtes SQL entre les objets et la base de données.
Pour résoudre ce problème, la communauté Java propose une technologie standard appelée JPA.
La norme Java ORM JPA vous permet de stocker des objets directement dans une base de données sans écrire de requêtes SQL, et résout également la différence entre les bases de données objet et relationnelles.
Bien que l'introduction de JPA dans notre travail ait été initialement difficile, la productivité du développement et de la maintenance s'est considérablement améliorée, nous permettant de consacrer plus de temps à la qualité du code et aux tests.
Et mes collègues qui avaient essayé JPA ne voulaient plus revenir en arrière.
Cependant, le manque de données nationales sur la JPA, et le fait que la plupart des données soient originales, ont rendu la tâche difficile.
J'avais donc une vague idée que j'aimerais écrire un livre sur JPA le moment venu, et puis Ilmin Lee, l'auteur de Toby's Spring 3 et Toby's Spring 3.1, m'a recommandé d'écrire un livre sur JPA.
J'ai décidé d'écrire un livre, pensant que six mois suffiraient, mais le temps a filé et deux ans se sont déjà écoulés.
Ce livre aborde tous les aspects de JPA, de la théorie de base et des principes fondamentaux aux méthodes d'optimisation des performances nécessaires à son utilisation pratique.
De plus, nous expliquons comment utiliser conjointement le framework Spring et JPA, et comment développer efficacement des applications web Java en tirant parti de solutions open source innovantes telles que Spring Data JPA et QueryDSL.
Avec le recul, je pense que j'en suis arrivé là grâce à ceux qui ont attendu et soutenu mon livre, pourtant insignifiant.
Je tiens à vous exprimer à tous ma sincère gratitude, car vous m'avez été d'une grande aide.
J'espère que ce livre sera utile à ceux qui débutent avec l'analyse de processus japonais (JPA).
■ Théorie de base et principes fondamentaux de l'analyse psychodynamique japonaise (JPA)
■ Explique le processus de conception d'un modèle de domaine à l'aide de JPA avec des exemples.
■ Description de divers langages de requêtes orientés objet
■ Comment développer des applications web en utilisant conjointement JPA et Spring Framework
■ Introduction et utilisation de Spring Data JPA et QueryDSL
■ Différentes manières d'optimiser les performances lors de l'utilisation pratique de JPA
★ Public cible de ce livre ★
Ce livre s'adresse à tous les développeurs Java qui souhaitent développer des applications d'entreprise utilisant JPA.
Pour comprendre le contenu de ce livre, vous devez posséder certaines connaissances du langage Java, de la programmation de bases de données utilisant JDBC, de la programmation orientée objet et des bases de données relationnelles.
De plus, la partie 3 requiert des connaissances de base en développement web et du framework Spring, ainsi que la capacité à utiliser JUnit.
L'exécution de l'exemple de code nécessite également une certaine connaissance de Maven.
★ Structure de ce livre ★
JPA peut être globalement divisé en une partie conception qui traite de la manière de mapper les objets et les tables, et une partie qui utilise effectivement le modèle conçu.
Dans la première partie du livre, vous apprendrez les théories de base et les méthodes de conception, et dans la seconde partie, vous développerez de véritables applications Web utilisant JPA en vous basant sur les théories que vous aurez apprises.
Ce livre est divisé en quatre grandes parties.
Les chapitres 1 à 9 sont théoriques.
Apprenez à mapper les objets et les tables, ainsi que les fonctionnalités de base de JPA.
Les chapitres 4 à 9 proposent à la fin de chaque chapitre des exemples pratiques qui permettent de concevoir progressivement un modèle de domaine, vous permettant ainsi d'appliquer concrètement ce que vous avez appris.
Le chapitre 10 est consacré aux langages de requêtes orientés objet. Nous y explorerons tous les aspects, depuis JPQL (Java Persistence Query Language), le langage de requêtes orienté objet fourni par JPA, jusqu'au SQL natif, qui permet d'écrire directement des requêtes SQL.
Les chapitres 11 et 12 sont des guides pratiques pour l'utilisation de JPA en pratique.
Apprenez à développer des applications web à l'aide du framework Spring et de JPA, et découvrez également des outils open source innovants tels que Spring Data JPA et QueryDSL.
Les chapitres 13 à 16 couvrent divers sujets avancés en JPA, notamment les transactions, les verrous, les caches et les optimisations de performances.
★ Conférence en ligne ★
Jusqu'à présent, JPA a été introduit dans divers projets pratiques.
J'ai conçu et développé des systèmes allant de simples services web à des systèmes de commande, de paiement et de règlement gérant des milliards de transactions, le tout avec JPA. Si l'implémentation initiale de JPA dans mon activité a représenté un certain défi, elle a considérablement amélioré la productivité du développement et la maintenance, me permettant ainsi de consacrer plus de temps à la qualité du code et aux tests.
Surtout, les collègues qui avaient utilisé JPA ne voulaient pas revenir en arrière.
Cependant, de nombreuses difficultés sont apparues en raison du manque de données nationales sur la JPA.
J'ai donc écrit ce livre moi-même en 2015.
Nous proposons des cours en ligne payants qui peuvent être visionnés en complément du livre.
Après la publication du livre, j'ai donné des conférences dans de nombreuses entreprises qui utilisent ou prévoient d'introduire JPA, allant des entreprises de commerce électronique comme Naver et Kakao aux entreprises de commerce électronique comme Woowa Brothers et 11st.
Après avoir constaté, grâce à des cours magistraux, que les développeurs parvenaient plus facilement à comprendre des passages difficiles à appréhender dans les livres, nous avons mis en place un cours en ligne.
À titre de référence, le cours utilise les dernières versions de Spring Boot et de JPA, et est facile à suivre grâce au code fourni.
Et nous nous sommes davantage concentrés sur la transmission d'un savoir-faire pratique.
J'espère que vous aussi pourrez utiliser JPA en toute confiance dans votre travail.
Vous pouvez suivre le cours en ligne en cliquant sur le lien suivant.
■ Lien vers le cours : https://www.inflearn.com/roadmaps/149
■ Liste des cours en ligne
Programmation JPA standard en Java ORM - Notions de base : https://www.inflearn.com/course/ORM-JPA-Basic
Utilisation concrète de Spring Boot et JPA 1 - Développement d'applications web : https://www.inflearn.com/course/springboot-jpa-utilization-1
Utilisation concrète de Spring Boot et JPA 2 - Développement d'API et optimisation des performances : https://www.inflearn.com/course/springboot-jpa-api-development-performance-optimization#
Entraînez-vous ! Spring Data JPA : https://www.inflearn.com/course/spring-data-jpa-practice
Entraînez-vous ! Querydsl : https://www.inflearn.com/course/Querydsl-Practice
★ Note de l'auteur ★
Je me souviens encore de la surprise que j'ai ressentie lorsque j'ai découvert JPA.
D'innombrables lignes de code CRUD et instructions SQL que j'avais écrites pour gérer des objets dans des bases de données relationnelles me traversèrent l'esprit.
C'était comme tomber nez à nez avec un tracteur dernier cri en pleine campagne, en train de planter des plants de riz.
Stocker des objets dans une base de données relationnelle peut s'avérer long et nécessiter beaucoup de code.
Des tâches simples comme la conversion d'un objet en SQL aux tâches complexes comme le stockage de la structure d'héritage de l'objet dans une table, les développeurs doivent écrire d'innombrables lignes de code de mappage et requêtes SQL entre les objets et la base de données.
Pour résoudre ce problème, la communauté Java propose une technologie standard appelée JPA.
La norme Java ORM JPA vous permet de stocker des objets directement dans une base de données sans écrire de requêtes SQL, et résout également la différence entre les bases de données objet et relationnelles.
Bien que l'introduction de JPA dans notre travail ait été initialement difficile, la productivité du développement et de la maintenance s'est considérablement améliorée, nous permettant de consacrer plus de temps à la qualité du code et aux tests.
Et mes collègues qui avaient essayé JPA ne voulaient plus revenir en arrière.
Cependant, le manque de données nationales sur la JPA, et le fait que la plupart des données soient originales, ont rendu la tâche difficile.
J'avais donc une vague idée que j'aimerais écrire un livre sur JPA le moment venu, et puis Ilmin Lee, l'auteur de Toby's Spring 3 et Toby's Spring 3.1, m'a recommandé d'écrire un livre sur JPA.
J'ai décidé d'écrire un livre, pensant que six mois suffiraient, mais le temps a filé et deux ans se sont déjà écoulés.
Ce livre aborde tous les aspects de JPA, de la théorie de base et des principes fondamentaux aux méthodes d'optimisation des performances nécessaires à son utilisation pratique.
De plus, nous expliquons comment utiliser conjointement le framework Spring et JPA, et comment développer efficacement des applications web Java en tirant parti de solutions open source innovantes telles que Spring Data JPA et QueryDSL.
Avec le recul, je pense que j'en suis arrivé là grâce à ceux qui ont attendu et soutenu mon livre, pourtant insignifiant.
Je tiens à vous exprimer à tous ma sincère gratitude, car vous m'avez été d'une grande aide.
J'espère que ce livre sera utile à ceux qui débutent avec l'analyse de processus japonais (JPA).
SPÉCIFICATIONS DES PRODUITS
- Date de publication : 28 juillet 2015
Nombre de pages, poids, dimensions : 736 pages | 1 261 g | 188 × 250 × 36 mm
- ISBN13 : 9788960777330
- ISBN10 : 8960777331
Vous aimerez peut-être aussi
카테고리
Langue coréenne
Langue coréenne