Bonjour,
Il m'est arrivé d'utiliser l'annotation @Transactional au boulot, mais je dois avouer qu'en fait je ne maîtrise pas vraiment l'impact dans la gestion des transactions par Spring.
Actuellement, j'ai une application où je gère manuellement mes transactions :
Ce que je voudrais savoir , c'est si l'utilisation de @Transactional au niveau de la couche service ou DAO me dispenserait de faire des rollbacks et des commits, voire me dispenserait complètement de gérer les transactions hibernate ?
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 org.hibernate.Session session = getSession(); try { org.hibernate.Transaction tx = session.beginTransaction(); try { session.save(entity); tx.commit(); } catch (HibernateException e) { tx.rollback(); throw new TechnicalException(e); } } finally { session.close(); }
En gros, est-ce que je pourrais avoir un code comme ça ? :
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 @Transactional(rollbackFor=TechnicalException.class) public void save(Object entity) { org.hibernate.Session session = getSession(); try { try { session.save(entity); } catch (HibernateException e) { throw new TechnicalException(e); } } finally { session.close(); } }
Partager