2015-04-02 95 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())) { 

} 
相关问题