Eclipselink: Verificação do nível de isolamento da transação atual
-
26-09-2019 - |
Pergunta
Eu tenho um aplicativo Java independente que usa o Eclipselink 2.0.1. É configurado por uma persistência.xml e depois faz algo como:
final EntityManagerFactory emf = Persistence.createEntityManagerFactory("xy");
final EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
....
em.getTransaction().commit();
Quero descobrir qual nível de isolamento da transação do banco de dados se aplica a essa transação. Mesmo uma solução "apenas depuração suja" seria útil.
A documentação do Eclipselink descreve, este
A obtenção de um nível de isolamento de transação de banco de dados em um aplicativo eclipselink está mais envolvido do que simplesmente usar o método do banco de dados SetTransactionisolation
Então, quero ter certeza de que meu nível de isolamento desejado se aplica!
Solução
Usando Connection#getTransactionLevel()
no subjacente Connection
Deveria trabalhar. Aqui está como você pode obtê -lo com o 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();
Referência
- Obtendo uma conexão JDBC de um entityManager (Abrange o JPA 1.0 e o JPA 2.0)