我正在开发一个JAVA + Hibernate项目,但是目前,我在代码中看到了一个接口(interface)(即ReturningWork<Long>
),该接口(interface)具有一种称为execute(java.sql.Connection)
的方法。
我的问题是这个ReturningWork
接口(interface)的用途是什么?
最佳答案
正如我在ozt_a中详细介绍的那样,您可以使用ReturningWork
和Work接口(interface)来实现任何需要直接访问Hibernate session 所使用的java.sql.Connection
的逻辑。
这是一个简单的示例,它使用ReturningWork
接口(interface)执行一个非常简单的查询(您也可以使用on my blog实现)并返回结果。
Session session = em.unwrap(Session.class);
Integer bookCount = session.doReturningWork(new ReturningWork<Integer>() {
@Override
public Integer execute(Connection con) throws SQLException {
// do something useful
try (PreparedStatement stmt = con.prepareStatement("SELECT count(b.id) FROM Book b")) {
ResultSet rs = stmt.executeQuery();
rs.next();
return rs.getInt(1);
}
}
});
log.info("Found " + bookCount + " books.");