Я хотел бы использовать разные уровни изоляции транзакций для одного и того же контекста устойчивости в среде J2EE. Например:J2EE/JPA: контроль изоляции транзакций
UserTransaction ut=...;
EntityManagerFactory emf=...;
EntityManager em=emf.createEntityManager;
ut.begin();
em.joinTransaction(); => use RepeatableRead isolation here
...
ut.commit();
ut.begin();
em.joinTransaction(); => use Serializable isolation here
...
ut.commit();
Я не нашел способа достичь этого. Когда EM сначала приобретает соединение с БД, оно берется из пула и немедленно заносится в текущую транзакцию XA. Впоследствии невозможно изменить транзакционную изоляцию этой транзакции DB.
Любые идеи?
Вот некоторая интересная информация для вас: http://amitstechblog.wordpress.com/2011/05/31/supporting-custom-isolation-levels-with-jpa/ –
@Pat B: спасибо за ссылку , В блоге обсуждается решение Hibernate/Spring. Насколько я могу судить, он не может использоваться в среде JTA (например, J2EE), поскольку транзакция начинается с реализации Datasource, а не от самого поставщика JPA. – ruediste