为了账号安全,请及时绑定邮箱和手机立即绑定

Hibernate ReturningWork<Long> 接口的目的是什么?

Hibernate ReturningWork<Long> 接口的目的是什么?

繁星coding 2021-07-20 15:53:50
我正在开发一个 JAVA + Hibernate 项目,但目前,我在我的代码(即ReturningWork<Long>)中看到了一个接口,其中有一个名为execute(java.sql.Connection).我的问题是这个ReturningWork接口有什么用?
查看完整描述

2 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

休眠会话休眠 Session doReturningWork

HibernateSession doReturningWork方法具有以下签名:


<T> T doReturningWork(ReturningWork<T> work) throws HibernateException;

而ReturningWork界面如下所示:


public interface ReturningWork<T> {

    public T execute(Connection connection) throws SQLException;

}

因此,与doWork方法不同,doReturningWork允许我们将对象返回给方法调用者。


例如,我们可以使用该doReturningWork方法来获取当前的事务隔离级别:


Session session = entityManager.unwrap(Session.class);


int isolationLevel = session.doReturningWork(

    connection -> connection.getTransactionIsolation()

);


assertEquals(

    Connection.TRANSACTION_READ_COMMITTED, 

    isolationLevel

);

何时使用doWork和doReturningWork?

通常,您可以使用 JPA 或 Hibernate 特定的 API 来执行 SQL 语句或调用数据库过程或函数。


但是,如果要访问底层 JDBCConnection方法并通过 JDBC API 执行任何可能的操作,则需要使用doWork和doReturningWorkHibernateSession方法。


查看完整回答
反对 回复 2021-07-29
  • 2 回答
  • 0 关注
  • 179 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信