session.connection() 在 Hibernate 上已弃用?

2022-08-31 12:14:08

我们需要能够获得休眠会话的关联。没有其他连接将起作用,因为此连接可能与正在运行的事务相关联。java.sql.Connection

如果 session.connection() 现在已被弃用,我该怎么做呢?


答案 1

现在,您必须使用工作 API:

session.doWork(connection -> doSomething(connection)); 

或者,在Java<8中:

session.doWork(
    new Work() {
        public void execute(Connection connection) throws SQLException 
        { 
            doSomething(connection); 
        }
    }
);

答案 2

如果现在已弃用,我应该如何执行此操作?session.connect()

你必须使用Ssion#doWork(Work)Work API,如Javadoc中所述:

connection()
已弃用。(计划在 4.x 中移除)。更换取决于需要;对于直接的JDBC的东西,请使用doWork(org.hibernate.jdbc.Work);用于打开“临时会话”使用 (TBD)。

在Hibernate 4.x之前,你有一些时间,但是,好吧,使用一个不推荐使用的API在某种程度上看起来像这样:

alt text:)

更新:根据 RE: [hibernate-dev] hibernate-dev 列表中的连接代理,似乎弃用的最初意图是阻止使用,因为它被认为是一个“坏”API,但它应该留在那个时候。我猜他们改变了主意...Session#connection()


推荐