EclipseLink: проверка текущего уровня изоляции транзакции - PullRequest
1 голос
/ 08 августа 2010

У меня есть отдельное Java-приложение, которое использует EclipseLink 2.0.1. Он настраивается с помощью файла persistence.xml, а затем выполняет что-то вроде:

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

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

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

Достижение определенного уровня изоляции транзакции базы данных в приложении EclipseLink является более сложным, чем просто использование метода DatabaseLogin setTransactionIsolation

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

1 Ответ

2 голосов
/ 09 августа 2010

Использование 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();

Ссылки

...