EclipseLink: проверка текущего уровня изоляции транзакции

StackOverflow https://stackoverflow.com/questions/3434813

Вопрос

У меня есть автономное приложение Java, которое использует ECLIPSELINK 2.0.1. Он настроен на сохранении .xml, а затем делает что-то вроде:

final EntityManagerFactory emf = Persistence.createEntityManagerFactory("xy");
final EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
....
em.getTransaction().commit();

Я хочу выяснить, какой уровень изоляции транзакции базы данных фактически применяется к этой транзакции. Даже решение «только грязное отладки» было бы полезным.

Документация EclipseLink. описывает, это

Достижение определенного уровня изоляции транзакции базы данных в приложении ECLIPSELINK более вовлечено, чем просто с использованием метода метода базы данных файсов.

Поэтому я хочу убедиться, что мой желаемый уровень изоляции применяется!

Это было полезно?

Решение

С использованием Connection#getTransactionLevel() на основе базового Connection должно сработать. Вот как вы можете получить его с JPA 2.0:

final EntityManagerFactory emf = Persistence.createEntityManagerFactory("xy");
final EntityManager em = emf.createEntityManager();
em.getTransaction().begin();

java.sql.Connection connection = em.unwrap(java.sql.Connection.class);
System.out.println(connection.getTransactionIsolation());

....
em.getTransaction().commit();

Ссылка

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top