J'étudie Hibernate et je réalise des petits TP. Actuellement j'en suis à essayer de comprendre la différence entre persist et save. Si j'ai bien compris, le persist n'affecte pas forcéement immédiatement un id à l'objet à persister mais surtout il est défini dans le cadre d'une transaction.
Or quand j'exécute le code suivant, j'ai mon objet qui est persisté quoi qu'il arrive. Y a-t-il quelque chose que je n'aurais pas comprise :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 public class MainApp { @Transactional public static void main(String[] args) { Session session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); Imagerie imagerie = new Imagerie(); imagerie.setNom("toto"); session.save(imagerie); session.flush(); if (1 == 1) { // On lève une exception avant le commit et à l'intérieur d'une transaction throw new NullPointerException(""); } session.getTransaction().commit(); // ce code est inatteignable // L'entité "Imagerie" est tout de même persistée en base ! } }
Partager