簡體   English   中英

Hibernate 4.1 到 5.1 SessionFactory 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;
}  

見:

Hibernate - 不推薦使用的 API

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM