在纯 JPA 设置中获取数据库连接
我们有一个 JPA 应用程序(使用休眠),我们需要将调用传递给需要 JDBC 数据库连接作为参数的旧版报告工具。有没有一种简单的方法来访问JDBC连接休眠设置?
我们有一个 JPA 应用程序(使用休眠),我们需要将调用传递给需要 JDBC 数据库连接作为参数的旧版报告工具。有没有一种简单的方法来访问JDBC连接休眠设置?
根据这里的文档,hibernate
连接连接()
已弃用。(计划在 4.x 中删除)。更换取决于需要;对于做直接的JDBC的东西使用doWork(org.hibernate.jdbc.Work)...
请改用休眠工作 API:
Session session = entityManager.unwrap(Session.class);
session.doWork(new Work() {
@Override
public void execute(Connection connection) throws SQLException {
// do whatever you need to do with the connection
}
});
您想从哪里获得该连接尚不清楚。一种可能性是从 使用的底层休眠中获取它。在 JPA 1.0 中,您必须执行如下操作:Session
EntityManager
Session session = (Session)em.getDelegate();
Connection conn = session.connection();
请注意,getDelegate()
不是可移植的,此方法的结果是特定于实现的:上面的代码适用于JBoss,对于GlassFish,您必须对其进行调整 - 看看在使用EntityManager.getDelegate()时要小心。
在 JPA 2.0 中,情况会好一些,您可以执行以下操作:
Connection conn = em.unwrap(Session.class).connection();
如果在容器内运行,则还可以对已配置的 执行查找。DataSource