2010-10-10 6 views
4

J'utilise OpenJPA et je veux le configurer pour utiliser Autocommit à chaque opération d'écriture/insertion.Autocommit OpenJPA écrit

Au moment où je dois faire ceci:

 MyEntity e = new MyEntity(); 
     em.getTransaction().begin(); 
     em.persist(e); 
     em.getTransaction().commit(); 

Ce que je veux être en mesure de faire est la suivante:

MyEntity e = new MyEntity();   
em.persist(e); // auto commit here 

Je cette propriété est définie sur true:

openjpa.NontransactionalWrite : true 

Des indices ?! Autant que je sache, OpenJPA utilise la valeur autocommit de la connexion sous-jacente.

Répondre

4

Vous ne pouvez pas engager automatiquement avec JPA. Si vous souhaitez supprimer la gestion des transactions locales, utilisez les transactions JTA/CMT ou Spring.

1

MAIS il définit explicitement autocommit sur false chaque fois que vous commencez une transaction.

Vous pouvez vérifier la connexion sous-jacente avec le code suivant:

OpenJPAEntityManager oem = OpenJPAPersistence.cast(em); 
Connection conn = (Connection) oem.getConnection(); 
boolean autoCommit = conn.getAutoCommit();