Gestion des transactions avec @Transactional
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 :
Code:
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();
} |
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 ?
En gros, est-ce que je pourrais avoir un code comme ça ? :
Code:
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();
}
} |