我想从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为此目的,但我没有找到任何示例?
答案 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();
...
}