Très bon livre.
Franz AJPA et Java Hibernate Apprenez le mapping objet-relationnel (ORM) avec Java
1 avis
Ce livre sur JPA (en version 2.1 au moment de l'écriture) et Java Hibernate s'adresse aux développeurs et étudiants en informatique, ayant des connaissances en Java et SQL, voulant découvrir ou approfondir leurs compétences sur les outils de mapping objet-relationnel (ORM ou Object-Relational Mapping en anglais). De l'explication des concepts des ORM jusqu'à la construction de requêtes, le lecteur est guidé pas à pas et crée...
Consulter des extraits du livre en ligne
Aperçu du livre papier
- Niveau Confirmé à Expert
- Nombre de pages 392 pages
- Parution janvier 2017
- Niveau Confirmé à Expert
- Parution janvier 2017
Ce livre sur JPA (en version 2.1 au moment de l'écriture) et Java Hibernate s'adresse aux développeurs et étudiants en informatique, ayant des connaissances en Java et SQL, voulant découvrir ou approfondir leurs compétences sur les outils de mapping objet-relationnel (ORM ou Object-Relational Mapping en anglais). De l'explication des concepts des ORM jusqu'à la construction de requêtes, le lecteur est guidé pas à pas et crée une application qui utilise cette technologie.
Dans la première partie, l'auteur met en place l'environnement de travail (serveur de base de données MySQL, environnement de développement intégré NetBeans) puis il détaille les concepts importants des ORM.
La seconde partie concerne la réalisation d'une application. L'auteur présente les étapes de conception qui permettent d'intégrer simplement les ORM, de les paramétrer et d'appréhender les différentes problématiques dans un ordre logique. Au fur et à mesure des pages, et au sein de chaque chapitre, une explication générale sur le point étudié est d'abord donnée, afin de situer le contexte et la problématique. Le modèle de données utilisé tout au long du livre contient tous les cas standards que le lecteur peut rencontrer dans une application, tels que les relations 1-1, 1-n, n-1 ou encore n-n avec la table intermédiaire enrichie, et leurs différentes possibilités d'utilisation.
La dernière partie propose des fonctionnalités plus avancées et quelques bonnes pratiques de développement telles que l'utilisation de Maven, la génération automatique des entités...
L'environnement de développement repose sur Java 8, Netbeans comme IDE, JPA 2.1 comme norme pour l'ORM et Hibernate pour son implémentation. Bien que l'ouvrage ait été réalisé pour NetBeans, le projet peut être réalisé avec l'IDE Eclipse.
Des éléments complémentaires sont en téléchargement sur le site www.editions-eni.fr.
Les chapitres du livre :
Avant-propos – Environnement de développement – Concept des ORM – Préparation d'un projet – Manipulation des données – Requêtes : les langages JPQL et HQL – L'API Criteria – Pour aller plus loin – Réalisation d'un projet
Dans la première partie, l'auteur met en place l'environnement de travail (serveur de base de données MySQL, environnement de développement intégré NetBeans) puis il détaille les concepts importants des ORM.
La seconde partie concerne la réalisation d'une application. L'auteur présente les étapes de conception qui permettent d'intégrer simplement les ORM, de les paramétrer et d'appréhender les différentes problématiques dans un ordre logique. Au fur et à mesure des pages, et au sein de chaque chapitre, une explication générale sur le point étudié est d'abord donnée, afin de situer le contexte et la problématique. Le modèle de données utilisé tout au long du livre contient tous les cas standards que le lecteur peut rencontrer dans une application, tels que les relations 1-1, 1-n, n-1 ou encore n-n avec la table intermédiaire enrichie, et leurs différentes possibilités d'utilisation.
La dernière partie propose des fonctionnalités plus avancées et quelques bonnes pratiques de développement telles que l'utilisation de Maven, la génération automatique des entités...
L'environnement de développement repose sur Java 8, Netbeans comme IDE, JPA 2.1 comme norme pour l'ORM et Hibernate pour son implémentation. Bien que l'ouvrage ait été réalisé pour NetBeans, le projet peut être réalisé avec l'IDE Eclipse.
Des éléments complémentaires sont en téléchargement sur le site www.editions-eni.fr.
Les chapitres du livre :
Avant-propos – Environnement de développement – Concept des ORM – Préparation d'un projet – Manipulation des données – Requêtes : les langages JPQL et HQL – L'API Criteria – Pour aller plus loin – Réalisation d'un projet
Téléchargements
Avant-propos
- Introduction
- Contenu de l'ouvrage
Environnement de développement
- Installation du JDK
- Installation de NetBeans
- Installation d'Hibernate
- Installation de MySQL
- Premier lancement de NetBeans
- 1. Mise en place des libraires
- 2. Création du projet
Concept des ORM
- Introduction
- Le concept
- 1. La norme : JPA
- 2. L’implémentation : Hibernate
- La structuration des données
- 1. Introduction au mapping
- 2. Importance du mapping
- 3. Différentes techniques de mapping
- La connexion aux données
- 1. Introduction aux sessions
- 2. Les différents types de sessions
- 3. L’utilisation d’une session
- a. RESOURCE_LOCAL avec Java SE
- b. RESOURCE_LOCAL avec Java EE
- c. JTA avec Java EE
- 1. Introduction aux requêtes
- 2. Les requêtes natives
- 3. Les requêtes objets
- 4. Les requêtes nommées
- 5. Les requêtes "implicites"
- 6. L’API Criteria
- 1. Introduction au cache
- 2. Les différents niveaux de caches
- 3. Cache de niveau 1 (L1)
- 4. Cache de niveau 2 (L2)
- 5. À retenir
Préparation d'un projet
- Présentation du projet du livre
- 1. Description
- 2. Schéma de la base de données
- Les possibilités de mapping
- 1. Fichier de mapping
- 2. Annotation
- Paramétrage de l'ORM
- 1. Création du fichier persistence.xml
- 2. L’unité de persistance
- 3. L’implémentation de JPA utilisée
- 4. Les entités à mapper
- 5. Les propriétés du fichier de persistance
- a. Le driver de connexion à la base de données
- b. L’URL de la base de données
- c. Le login
- d. Le mot de passe
- 6. Le chargement du contexte de persistance
- 1. Classes définies par l’utilisateur
- a. Classe d’entité
- b. Superclasse mappée
- c. Classe intégrable
- 1. Les champs temporaires
- 2. Les champs persistables
- a. L’annotation @Basic
- b. L’annotation @Column
- c. L’annotation @Temporal
- 1. Clé primaire simple
- 2. Clé primaire composée
- 1. Valeur fixe
- 2. Valeur incrémentielle
- a. GenerationType.AUTO
- b. GenerationType.IDENTITY
- c. GenerationType.TABLE
- d. GenerationType.SEQUENCE
- 1. Les relations 1-1 (OneToOne)
- 2. Les relations n-1 (ManyToOne)
- 3. Les relations 1-n (OneToMany)
- 4. Les relations n-n (ManyToMany)
- 5. Les relations n-n avec données sur la jointure
- 1. Lazy
- 2. Eager
- 3. Mise en place
- 1. Sérialisation
- 2. Equals et HashCode
- a. Implémentation par défaut
- b. Implémentation basée sur la clé primaire
- c. Implémentation basée sur une clé métier
- d. Conclusion
Manipulation des données
- Préparation
- Établissement de la connexion
- 1. EntityManagerFactory
- a. Avec conteneur JEE, en RESOURCE_LOCAL
- b. Sans conteneur JEE, en RESOURCE_LOCAL
- 1. EntityManagerFactory
- 2. EntityManager
- a. Avec conteneur JEE, en JTA
- b. Avec conteneur JEE, en RESOURCE_LOCAL
- c. Sans conteneur JEE, en RESOURCE_LOCAL
- 3. État d’une entité
- 1. Exécution d’une transaction
- 2. Méthodes diverses sur les transactions
- a. Vérifier que la transaction est active
- b. Empêcher la modification via la transaction
- 1. Création d’une entité simple
- 2. Création d’une arborescence d’entités
- a. Relation avec identifiant différent
- b. Relation avec identifiant partagé
- c. L’annotation @PrePersist
- d. Le générateur génériqued’Hibernate
- 1. Entité avec une clé primaire simple
- 2. Entité avec une clé primaire composée
- 3. Depuis une entité déjà chargée
- a. FetchType.EAGER
- b. FetchType.LAZY
- a. Chargement différé
- 1. Suppression simple
- 2. Suppression en cascade
- 3. Suppression d’une relation
- 1. Modification des champs d’une entité
- a. Depuis une entité managée
- b. Depuis une entité non managée
- a. Cas général
- b. Cas particulier : @ManyToMany
- a. Entité managée supprimée
- b. Suite de modification d’une entité non managée
- 1. De l’ORM vers la base de données
- 2. De la base de données vers l’entité
Requêtes : les langages JPQL et HQL
- Introduction
- Généralités
- Types de requêtes
- 1. SELECT
- 2. UPDATE
- 3. DELETE
- 4. INSERT
- La clause SELECT
- La clause FROM
- 1. Variables d’identification
- 2. Référence à l’entité root
- 3. Les jointures
- La clause WHERE
- Les expressions
- 1. Alias
- 2. PATH
- 3. Paramètres
- 4. Littéral
- a. Le littéral NULL
- b. Le littéral booléen
- c. Le littéral numérique
- d. Le littéral string
- e. Le littéral date
- f. Le littéral énum
- g. Le littéral d’entité
- 5. Type d’entité
- 6. Arithmétique
- 7. Fonctions d’agrégations
- 8. Fonctions scalaires
- a. CONCAT
- b. SUBSTRING
- c. UPPER
- d. LOWER
- e. TRIM
- f. LENGTH
- g. LOCATE
- h. ABS
- i. MOD
- j. SQRT
- k. CURRENT_DATE
- l. CURRENT_TIME
- m. CURRENT_TIMESTAMP
- 9. Collections
- a. Vérifier qu’une liste est vide
- b. Taille d’une collection
- c. Contrôler la présence d’un élément
- 1. Mise à jour de toutes les données
- 2. Mise à jour restrictive
- 1. Supprimer toutes les données
- 2. Suppressions restrictives
L'API Criteria
- Introduction
- L'API Metamodel
- 1. Le métamodèle dynamique
- 2. Le métamodèle statique
- a. Attribut simple
- b. Attribut basé sur une collection
- c. Conclusion
- 1. Utilisation du métamodèle
- 1. CriteriaQuery
- a. Le type de retour
- b. Paramétrage du périmètre
- c. Paramétrage de la restriction
- d. Paramétrage du regroupement
- e. Paramétrage du retour
- f. Paramétrage du tri
- g. Préparation de la requête
- h. Exécution de la requête
- a. Type d’entité modifié
- b. Paramétrage du périmètre
- c. Initialisation des valeurs à modifier
- d. Paramétrage de la restriction
- e. Exécution de la requête
- a. Type d’entité modifié
- b. Paramétrage du périmètre
- c. Paramétrage de la restriction
- d. Exécution de la requête
- 1. Root
- 2. Multiple Root
- 3. Jointures
- a. Type de jointure
- b. Modifier la condition de jointure
- c. Multiple jointure
- d. Fetch
- 1. Avec Expression<boolean></boolean>
- 2. Avec un Predicate
- 3. Avec plusieurs Predicate
- 4. Avec Predicate[]
- 5. Sans paramètre
- 1. GROUP BY
- 2. HAVING
- 1. L’objet Order
- 2. ORDER BY
- 1. PATH
- 2. Paramètres
- 3. Tests et comparaisons (Predicate)
- a. La nullité
- b. Le booléen
- c. La négation
- d. L’égalité
- e. L’infériorité et la supériorité
- f. Le LIKE
- g. Le BETWEEN
- h. AND et OR
- a. Literal
- b. CONCAT
- c. SUBSTRING
- d. UPPER
- e. LOWER
- f. TRIM
- g. LENGTH
- h. LOCATE
- i. CASE
- j. CURRENT_DATE
- k. CURRENT_TIME
- l. CURRENT_TIMESTAMP
- a. Vérifier qu’une liste est vide
- b. Taille d’une collection
- c. Contrôler la présence d’un élément
- 1. Écriture minimum
- 2. Écriture successive des méthodes
- 3. Requête dynamique
Pour aller plus loin
- Maven
- 1. NetBeans
- a. Configuration
- b. Création d’un projet
- 1. NetBeans
- 2. Hibernate
- 3. MySQL
- 4. Exemple de fichier POM
- 1. Génération des entités
- 2. Génération des tables
- a. Configuration de l’action
- b. Suppression et création
- c. Chargement des données
- d. Résumé
- a. Avec l’annotation processor de NetBeans
- b. Avec Maven
- 1. Généralités
- 2. Outils de gestion de cache de second niveau
- a. Installation d’Ehcache
- b. Configuration d’Ehcache
- c. Paramétrage d’Hibernate
- d. Entité et relation de type entité
- e. Entité et relation de type liste
- 1. Les EntityListener
- 2. Les convertisseurs
- 1. Installation
- 2. Configuration
- 1. Affichage des requêtes
- 2. Multithreading
- 3. Récupérer une session de l’implémentation
- 4. MVC
Réalisation d'un projet
- Introduction
- 1. Import du projet
- Définition du projet
- 1. L’application dans le système d’information
- a. Java SE ou Java EE
- b. Modification de données
- c. Nombre d’exécutions de l’application
- 1. L’application dans le système d’information
- 2. Fonctionnement de l’application
- a. Gestion de la connexion
- b. Temps de veille de l’application
- c. Nombre de requêtes simultanées
- d. Données de référence
- e. Requêtes dynamiques
- 3. Création de l’application
- a. Configuration initiale du projet
- b. Création de JpaUtil
- c. Vérification de la configuration
- 1. Création du modèle
- 2. Personnalisation du modèle
- a. Vérifier les types
- b. Vérifier les relations entre les entités
- c. Modifier equals() et hashCode()
- d. Ajouter des requêtes nommées
- e. Mettre en place des générateursspécifiques
- f. Utiliser les listeners d’entités (@PrePersist…)
- g. Cache de second niveau
- 1. Création des contrôleurs
- 2. Personnalisation des contrôleurs
- a. La construction du contrôleur
- b. La gestion des opérations en cascade
- c. Les données de référence
- 1. Création
- 2. Récupération de données
- 3. Modification
- 4. Suppression
- 1. Vérification des fichiers de configuration
- a. Connexions à la base de données
- b. Pool de connexions (c3p0)
- c. L’implémentation
- d. Cache de second niveau (ehcache)
- e. Conclusion
Martial BANON
Martial BANON évolue professionnellement dans le domaine de la conception informatique depuis 2005, autant sur des logiciels embarqués autonomes que sur des Systèmes d'Information complexes. Passionné par son métier, il a occupé des postes tels que développeur, architecte, lead-développeur ou encore chef de projets. Il participe régulièrement à la formation de jeunes développeurs rejoignant ses équipes et c'est cette double compétence technique et pédagogique dont il fait profiter le lecteur avec ce livre sur JPA et Java Hibernate.
En savoir plus