【问题标题】:How to find out the transaction isolation level used for the particular query in hibernate?如何找出用于休眠中特定查询的事务隔离级别?
【发布时间】:2016-08-19 19:34:52
【问题描述】:
【问题讨论】:
标签:
java
spring
hibernate
【解决方案1】:
我会说这个问题被错误地提出:查询 本身没有任何隔离级别。 隔离级别是事务的一个特征。
那么您很可能想知道当前事务的隔离级别是多少?因此,您很可能不会通过您的代码管理此级别。在这种情况下,它由 DBMS 默认或当前设置管理。
描述了一种可能的探索方式here:
try {
session = getSessionFactory().openSession();
txn = session.beginTransaction();
session.doWork(new Work() {
@Override
public void execute(Connection connection) throws SQLException {
LOGGER.debug("Transaction isolation level is {}", Environment.isolationLevelToString(connection.getTransactionIsolation()));
}
});
txn.commit();
} catch (RuntimeException e) {
if ( txn != null && txn.isActive() ) txn.rollback();
throw e;
} finally {
if (session != null) {
session.close();
}
}