PRÉPARATION ENTRETIEN JPA HIBERNATE
Questions d’entretien
JPA Hibernate
Révise les questions JPA Hibernate les plus fréquentes en entretien backend : Entity, EntityManager, Lazy vs Eager, problème N+1, transactions, cache, relations, cascade, orphanRemoval et pièges classiques.
POURQUOI RÉVISER JPA HIBERNATE ?
JPA Hibernate est un sujet clé.
Et souvent un vrai piège en entretien.
En entretien backend Java, JPA et Hibernate reviennent très souvent parce qu’ils sont au cœur de nombreuses applications Spring Boot connectées à une base de données.
Le recruteur ne cherche pas seulement à savoir si tu sais créer une entité avec @Entity.
Il veut vérifier si tu comprends le cycle de vie des entités, les relations, les transactions,
le lazy loading, le problème N+1, le cache de premier niveau et les pièges de performance.
Cette page te donne une première base de révision. Pour aller plus loin, DevUpNow te permet de t’entraîner avec des questions JPA, Hibernate, Spring Boot, Java et SQL, avec des réponses expliquées et des pièges fréquents.
THÈMES À RÉVISER
Les sujets JPA Hibernate qui tombent souvent en entretien
Entités JPA
@Entity, @Id, @GeneratedValue, colonnes, tables et mapping objet-relationnel.
Relations
@OneToMany, @ManyToOne, @ManyToMany, mappedBy et owning side.
Lazy vs Eager
Comprendre le chargement des relations et éviter les mauvaises surprises.
N+1 & performance
Identifier les requêtes inutiles et utiliser les bons fetchs.
QUESTIONS FRÉQUENTES
Questions d’entretien JPA Hibernate avec réponses expliquées
1. Quelle est la différence entre JPA et Hibernate ?
C’est une question très fréquente en entretien Java backend, car beaucoup de candidats utilisent Hibernate sans savoir clairement distinguer JPA et Hibernate.
JPA, pour Java Persistence API, est une spécification. Elle définit un standard pour gérer la persistance des objets Java en base de données.
Hibernate est une implémentation de cette spécification. En pratique, quand on utilise Spring Data JPA, on utilise souvent JPA comme API et Hibernate comme moteur d’implémentation derrière.
2. À quoi sert l’annotation @Entity ?
@Entity indique qu’une classe Java est une entité persistante, c’est-à-dire qu’elle peut être
associée à une table en base de données.
Une entité possède généralement un identifiant annoté avec @Id. Cet identifiant permet à JPA
de distinguer les instances et de suivre leur état dans le contexte de persistance.
En entretien, il faut expliquer qu’une entité n’est pas seulement une classe classique : elle est gérée par JPA lorsqu’elle est attachée au contexte de persistance.
3. Qu’est-ce que l’EntityManager ?
L’EntityManager est l’interface principale de JPA pour interagir avec le contexte de persistance.
Il permet notamment de persister une entité, la rechercher, la supprimer, la détacher ou exécuter des requêtes.
En entretien, il faut surtout comprendre que l’EntityManager ne fait pas que lancer des requêtes SQL. Il gère aussi l’état des entités dans le contexte de persistance.
4. Quels sont les états d’une entité JPA ?
Une entité JPA peut passer par plusieurs états pendant son cycle de vie.
Une entité transient est un objet Java classique qui n’est pas encore connu du contexte de persistance.
Une entité managed est suivie par JPA. Toute modification peut être détectée puis synchronisée avec la base de données lors du flush.
Une entité detached a déjà été gérée par JPA, mais elle n’est plus attachée au contexte courant. Une entité removed est marquée pour suppression.
5. Quelle est la différence entre Lazy et Eager ?
Lazy signifie que la donnée liée n’est chargée que lorsqu’elle est réellement utilisée.
Eager signifie que la donnée liée est chargée immédiatement avec l’entité principale.
Par exemple, une entité User peut avoir une liste de commandes. En lazy loading, les commandes
ne sont pas forcément chargées au moment où l’utilisateur est récupéré.
En entretien, il faut expliquer que le lazy loading peut améliorer les performances, mais qu’il peut aussi provoquer
une LazyInitializationException si la relation est accédée en dehors d’une session ou transaction active.
6. Qu’est-ce que le problème N+1 en Hibernate ?
Le problème N+1 est un piège classique en entretien Hibernate. Il se produit lorsqu’une première requête récupère une liste d’entités, puis qu’une requête supplémentaire est exécutée pour chaque entité afin de charger une relation.
Par exemple, une requête récupère 100 utilisateurs. Puis Hibernate exécute 100 requêtes supplémentaires pour charger leurs commandes. On obtient alors 1 requête initiale + N requêtes supplémentaires.
Ce problème peut fortement dégrader les performances. Pour le corriger, on peut utiliser un JOIN FETCH,
un @EntityGraph, une requête adaptée ou revoir la stratégie de chargement.
7. Quelle est la différence entre persist() et merge() ?
persist() sert à rendre persistante une nouvelle entité. Elle est utilisée lorsqu’un objet n’existe
pas encore en base et doit être ajouté au contexte de persistance.
merge() sert à recopier l’état d’une entité détachée dans une entité gérée par le contexte de persistance.
Un piège fréquent est de croire que merge() rattache directement l’objet passé en paramètre.
En réalité, merge() retourne une instance managed, tandis que l’objet original peut rester detached.
8. Qu’est-ce que le dirty checking ?
Le dirty checking est un mécanisme Hibernate qui détecte automatiquement les modifications faites sur une entité managed.
Si une entité est attachée au contexte de persistance et que ses champs sont modifiés, Hibernate peut détecter
ces changements et générer une requête SQL UPDATE au moment du flush.
C’est une notion importante en entretien, car elle explique pourquoi il n’est pas toujours nécessaire d’appeler explicitement une méthode save sur une entité déjà managed.
9. Quelle est la différence entre cascade et orphanRemoval ?
cascade permet de propager certaines opérations d’une entité parente vers ses entités liées.
Par exemple, si on persiste un parent, on peut aussi persister automatiquement ses enfants.
orphanRemoval sert à supprimer automatiquement une entité enfant lorsqu’elle est retirée de la relation
avec son parent.
En entretien, il faut éviter de confondre les deux. Cascade propage une opération, tandis que orphanRemoval concerne la suppression d’un enfant qui n’est plus rattaché à son parent.
10. À quoi sert @Version en JPA ?
@Version permet de mettre en place le verrouillage optimiste, aussi appelé optimistic locking.
L’idée est d’éviter qu’une mise à jour écrase silencieusement les modifications faites par une autre transaction. JPA vérifie la version de l’entité au moment de la mise à jour.
Si deux transactions modifient la même entité en parallèle, la version permet de détecter un conflit. Une exception peut alors être levée au lieu d’écraser les données sans contrôle.
Tu veux t’entraîner sur plus de questions JPA Hibernate ?
DevUpNow te permet de réviser les questions d’entretien JPA, Hibernate, Spring Boot, Java et SQL avec des réponses expliquées, des fiches de révision et des pièges fréquents.
Télécharger l’app gratuitement →QUESTIONS PIÈGES
Questions pièges JPA Hibernate fréquentes en entretien
Certaines questions JPA Hibernate permettent de vérifier si tu comprends vraiment ce qu’il se passe entre ton code Java, le contexte de persistance et la base de données.
Lazy loading
Pourquoi une LazyInitializationException peut-elle apparaître ?
N+1
Pourquoi une page peut déclencher des dizaines de requêtes SQL sans qu’on s’en rende compte ?
Cascade
Quelle différence entre supprimer un parent, supprimer un enfant et retirer un enfant d’une relation ?
FAQ
FAQ — Entretien JPA Hibernate
Quelles sont les questions JPA Hibernate les plus fréquentes en entretien ?
Les questions les plus fréquentes concernent la différence entre JPA et Hibernate, les entités, l’EntityManager, les relations, Lazy vs Eager, le problème N+1, les transactions, le dirty checking, le cache de premier niveau et les cascades.
Pourquoi Hibernate est-il souvent demandé en entretien Java backend ?
Hibernate est très utilisé dans les applications Java avec Spring Boot. Il permet de gérer la persistance des données, mais il peut aussi provoquer des problèmes de performance si les relations, les transactions et les stratégies de chargement sont mal comprises.
Faut-il connaître SQL pour comprendre JPA Hibernate ?
Oui. Même si JPA permet de manipuler des objets Java, il reste indispensable de comprendre SQL. En entretien, il est important de savoir expliquer quelles requêtes peuvent être générées derrière le code Java.
Quelle est la question piège la plus fréquente sur Hibernate ?
Le problème N+1 est l’un des pièges les plus fréquents. Il permet de vérifier si le candidat comprend les impacts du lazy loading, des relations entre entités et des requêtes générées automatiquement par Hibernate.
Prêt à réussir
ton prochain entretien JPA Hibernate ?
Google Play
l’App Store
Télécharge DevUpNow
Choisis ton store pour commencer gratuitement.