Java 为什么Hibernate没有';无法使会话自动关闭?

Java 为什么Hibernate没有';无法使会话自动关闭?,java,hibernate,session,try-catch,Java,Hibernate,Session,Try Catch,为什么Hibernate没有使会话自动关闭?这与会话的设计有关 我们是否应该编写自己的包装器类来实现这一点,这样就可以使用Java 7的ARM特性了?Hibernate与Java 6兼容。由于Java 7中引入了AutoCloseable,因此它只能由需要Java 7的软件使用。需要Java 7的Hibernate版本可能包含会话实现自动关闭这在Hibernate版本5中已经修复。 如果您可以升级到版本5,请使用此。 支持Jira票据 对于无法升级的项目,我们可以实现自己的CloseableS

为什么Hibernate没有使会话自动关闭?这与会话的设计有关


我们是否应该编写自己的包装器类来实现这一点,这样就可以使用Java 7的ARM特性了?

Hibernate与Java 6兼容。由于Java 7中引入了
AutoCloseable
,因此它只能由需要Java 7的软件使用。需要Java 7的Hibernate版本可能包含
会话
实现
自动关闭

这在Hibernate版本5中已经修复。 如果您可以升级到版本5,请使用此。 支持Jira票据

对于无法升级的项目,我们可以实现自己的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())) {

}