![](/img/trans.png)
[英]Why SessionFactory is said to be a client of ConnectionProvider
[英]Hibernate 4.1 to 5.1 SessionFactory ConnectionProvider
如何从休眠 5 中的会话工厂获取连接提供程序? 获取连接的方法不再存在,也不会被 javadocs 中的任何内容替换。 此代码片段在 4.1 中有效,但在 5.1 中无效(特别是 getConnectionProvider() 不存在)。
private SessionFactory factory;
private ServletOutputStream outputStream;
private ServletContext context;
public Object execute(Map properties) {
InputStream input = null;
try {
Session session = factory.getCurrentSession();
SessionFactoryImplementor sessionFactoryImplementation = (SessionFactoryImplementor) session.getSessionFactory();
ConnectionProvider connectionProvider = sessionFactoryImplementation).getConnectionProvider();
Connection conn = connectionProvider.getConnection();
对于休眠 5.2.10,试试这个:
public Connection getConnection(){
try {
return ((SessionImplementor) sessionFactory).getJdbcConnectionAccess()
.obtainConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
见:
Docs Hibernate 4.1 - SessionFactoryImplementor.getConnectionProvider()
正如 Allinger Medeiros 所说,ConnectionProvider 在 Hibernate 4 中已弃用,在 Hibernate 5 中不可用。但是,正如 Gwaptiva 指出的那样,他的解决方案会导致 ClassCastException。
这对我有用:
JdbcConnectionAccess connectionAccess =
((SessionImplementor)sessionFactory.getCurrentSession())
.getJdbcConnectionAccess();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.