如何从hibernate会话获得jdbc连接?

时间:2012-02-28 13:24:26

标签: java hibernate jdbc

我想从hibernate session获得jdbc连接。在hibernate session中有方法 即session.connection();但它已被弃用。我知道这仍然有效,但我不想使用弃用的方法,因为我相信他们必须为此提供一些替代方案? 在http://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/Session.html连接方法api说使用org.hibernate.jdbc.Work为此目的,但我没有找到任何示例?

3 个答案:

答案 0 :(得分:82)

以下是如何使用它:

session.doWork(new Work() {
    @Override
    public void execute(Connection connection) throws SQLException {
        //connection, finally!
    }
});

答案 1 :(得分:23)

试试这个:

((SessionImpl)getSession()).connection()

答案 2 :(得分:11)

我遇到了类似的问题,我使用ConnectionProvider类来获取连接。见我的解决方案:

Session session = entityManager.unwrap(Session.class);
SessionFactoryImplementor sessionFactoryImplementation = (SessionFactoryImplementor) session.getSessionFactory();
ConnectionProvider connectionProvider = sessionFactoryImplementation.getConnectionProvider();
try {
       connection = connectionProvider.getConnection();
       ...
}