Comportement étrange de Hibernate avec le persist au sein d'une transaction
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:
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 !
}
} |