entityManager.persist et transaction
Bonjour,
je m'interroge sur les transactions. J'ai vu au fil de mes lectures deux type de gestion des transactions (corrigez moi si je me trompe)
on peut utiliser une EntityManager :
Code:
1 2 3
|
@PersistenceContext(unitName="ToDoEJB3")
private EntityManager entityManager; |
ou injecter une transaction via
Code:
1 2
|
@TransactionManagement(BEAN) |
J'aimerai savoir lorsque l'on utilise un EntityManager, à quel moment peut on faire un rollback ?
le rollback est automatique ?
pour tester j'ai fais un entityManager.persist(monObjet) dans un try catch
puis j'ai généré une erreur de programmation juste apres.
résultat, il n'y a pas eu persitance des données en base de données !
y'a t'il eu un rollback ?
Quand est effectué le commit lorsque l'on utilise un persit ?
C'est le conteneur qui gère donc la transaction via cet EntityManager ?
Si c'est le cas, si le conteneur capte une erreur il rollback automatiquement ?
merci, ça fait beaucoup de questions ^^
Soucis avec les transactions
Bonjour.
J'ai lu (avec beaucoup d'attention) et appliqué la gestion des transactions telle que expliquée précédement. Mais j'ai toujours une erreur
Exception in thread "main" javax.ejb.EJBTransactionRolledbackException: [PersistenceUnit: leReal-entite] Unable to build EntityManagerFactory
Mon code:
EntityManagerFactory emf = Persistence.createEntityManagerFactory("leReal-entite");
EntityManager em = emf.createEntityManager();
//getManager()
em.getTransaction().begin();
if(em.merge(eleve) == null || em.merge(classe) == null){
em.getTransaction().rollback();
em.close();
emf.close();
return 0;
}
Dans le persistence.xml:
<persistence-unit name="leReal-entite">
Des suggestions ?????
Merci