session.connection() 在 Hibernate 上被弃用了吗?

新手上路,请多包涵

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

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

原文由 TraderJoeChicago 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 555
2 个回答

您现在必须使用工作 API:

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

或者,在 Java < 8 中:

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

原文由 KeatsPeeks 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果 session.connect() 现在已弃用,我应该怎么做?

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

connection()

已弃用。 (计划在 4.x 中删除)。更换视需要而定;做直接 JDBC 的东西使用 doWork(org.hibernate.jdbc.Work) ;用于打开“临时会话”使用 (TBD)。

在 Hibernate 4.x 之前还有一些时间,但是,好吧,使用不推荐使用的 API 看起来像这样:

替代文字 :)

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

原文由 Pascal Thivent 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题