2015-04-02 103 views
3

爲什麼Hibernate沒有將會話設置爲自動關閉?會話設計是否有用。爲什麼Hibernate沒有將會話設置爲自動關閉?

我們是否應該編寫自己的包裝類來做到這一點,以便可以使用Java 7的ARM特性?

+0

會話工廠生成會話對象爲你們每一個人都time.session可你只需要進行配置的方式自動刷新。 – arjun 2015-04-02 16:02:01

回答

3

Hibernate與Java 6兼容。由於AutoCloseable是在Java 7中引入的,因此只能由需要Java 7的軟件使用。需要Java 7的Hibernate版本可能包含實現AutoCloseableSession

0

這已經在休眠版本5中修復。 如果您可以升級到版本5,請使用它。 支持吉拉票

https://hibernate.atlassian.net/browse/HHH-8898

對於項目,不能升級,爲此,我們可以實現我們自己的CloseableSession接口。

public class CloseableSession implements AutoCloseable { 

    private final Session session; 

    public CloseableSession(Session session) { 
     this.session = session; 
    } 

    public Session getSession() { 
     return session; 
    } 

    @Override 
    public void close() { 
     session.close(); 
    } 
} 

使用

try (CloseableSession session = new CloseableSession(
       sessionFactory.openSession())) { 

} 
相關問題