2013-03-05 35 views
2

當使用HibernateDaoSupport類時,我發現getSession().connection();已棄用。不贊成的hibernate getSession().connection()

什麼是另一種方法,請,而不是此

+0

這個問題在這裏相當詳細的討論。 http://stackoverflow.com/questions/8770459/connection-getmetadata-does-not-seem-to-return-table-info – Nozone 2013-08-06 16:10:37

回答

1

現在我們必須使用session.doWork() API:

session.doWork(
     new Work() { 
      public void execute(Connection connection) throws SQLException 
      { 
       doSomething(connection); 
      } 
     } 
    ); 

另請參閱:session.connection() deprecated on Hibernate?

+0

您的文章的最後一行足以添加爲問題的評論,而不是比發佈一個新的答案。除了API鏈接以外沒有新東西。 – 2013-03-05 08:47:41

+0

@NayanWadekar感謝您的關注。如果您看到該鏈接,則有4到5種獲取連接對象的方法。但是我上面寫的那個看起來更好(根據我的理解,在閱讀了所有可能性之後)。 – 2013-03-05 08:57:44

+0

我認爲,一個小小的綠色勾號和票數足以儘量減少可能性。 – 2013-03-05 09:00:22

0

我已經找到了以下解決方法用於獲取會話的連接沒有任何折舊。我很確定Hibernate的人並不打算允許這樣做。

private static class WorkAround implements org.hibernate.jdbc.Work { 
    private Connection conn = null; 

    @Override 
    public void execute(Connection conn) throws SQLException { 
     this.conn = conn; 
    } 

    public Connection getConnection() { 
     return conn; 
    } 

} 

public static Connection getConnection(Session session) { 
    WorkAround wrk = new WorkAround(); 
    session.doWork(wrk); 
    return wrk.getConnection(); 
} 

我想後這個答案在這裏:session.connection() deprecated on Hibernate?,但我認爲我不能給。