![](/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.