Affichage des articles dont le libellé est hibernate. Afficher tous les articles
Affichage des articles dont le libellé est hibernate. Afficher tous les articles

Questions JPA, Hibernate

Au sujet save() et saveOrUpdate(), quelle est la bonne affirmation ?
  1. Avec save() on n’utilise pas de transaction.
  2. Save() est une méthode de l’objet Session, alors que saveOrUpdate() est une méthode de l’object Transaction.
  3. Save() insert un enregistrement en table. SaveOrUpdate met à jours un enregistrement. S’il ne le trouve pas, il l’insert.
  4. SaveOrUpdate() et Save() ne nécessite pas d’être dans un bloc de traitement d'erreur.

find(), get(), et load()

get(), load() vs find()
- get() et load() retournent un objet.
- find() retourne un liste.

load() vs get()
-l'objet n'existe ni en base ni dans le cache:
   - load() ne retourne jamais null. Il retourne une exception.
   - get() retourne null.
-l'objet existe en base ou dans le cache:
   - load() retourne un proxy des objets dépendants (initialisation paresseuse ou lazy loading).
   - get() retourne retourne toute la grappe de l'objet (i.e. avec les objets dépendants) initialisée. Ce qui entraîne de multiple requêtes (problème du N+1 requêtes).


Hibernate : Avantages / Inconvenients

Avantages
- Génère le code SQL --> L'application est plus portable. On peut changer de base de données sans difficulté.
- Persistance transparente. On peut faire de nos classes métiers des classes persistantes sans ajout de code.
- La récupération des données est optimisé grâce à un système de caches.

Inconvénient 
- Dure de faire des requêtes complexe.