Question
J'utilise OpenJPA et que vous souhaitez le configurer pour utiliser Autocommit sur chaque écriture / opération d'insertion.
À l'heure actuelle, 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 cet ensemble de propriété sur true:
openjpa.NontransactionalWrite : true
Les indices!
La solution
Vous ne pouvez pas auto-commit avec JPA. Si vous souhaitez supprimer la gestion locale des transactions, utilisez JTA / CMT ou gérés par Spring transactions.
Autres conseils
Pour autant que je sache, OpenJPA utilise la valeur de validation automatique de la connexion sous-jacente. Mais il établit explicitement autocommit 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();