【问题标题】:How to find out the transaction isolation level used for the particular query in hibernate?如何找出用于休眠中特定查询的事务隔离级别?
【发布时间】:2016-08-19 19:34:52
【问题描述】:

我正在使用 Spring MVC 和休眠。我的底层数据库是 Sybase ASA。在我的 DAO 中,我想找出用于查询的事务级别是什么

这就是我的 DAO 所拥有的。

Session session = getSession();
String SQL_QUERY = "select ..... ";
Query query = session.createSQLQuery(SQL_QUERY);
query.executeUpdate(); 

我参考了这个链接,但这似乎已经过时了,所以不起作用 What is default isolation level hibernate uses if not explicitely set?

【问题讨论】:

    标签: 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();
        }
    }
    

    【讨论】:

    • 谢谢。工作。我同意这个问题写错了。我会解决的。
    猜你喜欢
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    • 2015-03-26
    • 2011-09-30
    相关资源
    最近更新 更多