我想从休眠会话中获得jdbc连接。在hibernate会话中有方法 即session.connection();但它已被弃用。我知道这仍然有效,但我不想使用已弃用的方法,因为我确定他们必须为此提供一些替代方法? 在http://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/Session.html连接方法API说使用org.hibernate.jdbc.Work为此目的,但我没有找到任何例子呢?如何从休眠会话获取jdbc连接?
回答
这里是你如何使用它:
session.doWork(new Work() {
@Override
public void execute(Connection connection) throws SQLException {
//connection, finally!
}
});
问:我得到'如果没有使用此代码的活动事务,doWork是无效的,如何启动事务? – OscarRyz 2012-12-06 20:52:46
@OscarRyz:如果你使用Spring,'@ Transactional'或'TransactionTemplate'就足够了。在原始Hibernate中,你必须[手动运行session.beginTransaction()](http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/transactions.html#transactions-basics)。 – 2012-12-06 20:55:39
嗨,好友..好的答案,但doWork()现在也被弃用。 – Logicalj 2013-01-09 10:33:42
我有一个类似的问题,我用ConnectionProvider
类来获取连接。见我的解决方案:
Session session = entityManager.unwrap(Session.class);
SessionFactoryImplementor sessionFactoryImplementation = (SessionFactoryImplementor) session.getSessionFactory();
ConnectionProvider connectionProvider = sessionFactoryImplementation.getConnectionProvider();
try {
connection = connectionProvider.getConnection();
...
}
试试这个:
((SessionImpl)getSession()).connection()
- 1. 如何找到休眠会话的jdbc连接超时
- 2. JDBC休眠 - Mysql连接错误
- 3. 休眠:从合并会话
- 4. 休眠缓慢获取Postgres连接
- 5. 休眠noob获取连接问题
- 6. [N]休眠会话
- 7. 休眠从另一个会话获取集合
- 8. 休眠:更改休眠连接
- 9. 无法获得会话工厂休眠
- 10. 如何断开休眠会话
- 11. 如何使用休眠会话?
- 12. 如何手动打开休眠会话?
- 13. 休眠会话如何工作
- 14. 获取休眠
- 15. 获取休眠
- 16. 休眠没有找到连接在会话实体
- 17. 休眠:关闭会话工厂不关闭c3p0连接池
- 18. 休眠不关闭DB上的连接/会话
- 19. 从休眠会话中删除对象
- 20. 休眠会话错误
- 21. SEAM /休眠:一个会话
- 22. 休眠会话关闭
- 23. 休眠会话处理
- 24. EntityManager和休眠会话
- 25. 休眠会话线程
- 26. Vaadin休眠会话错误
- 27. JMS与休眠会话
- 28. 管理休眠会话
- 29. 休眠会话范围
- 30. 从休眠状态获取SQL获取
如果有人标志着一个问题,重复请包括一个链接到的是已经有一个答案的其他问题之一, – 2015-10-01 09:15:00