【问题标题】:Why Hibernate didn't make session as Auto Closeable?为什么 Hibernate 没有将会话设置为 Auto Closeable?
【发布时间】:2017-12-12 15:30:13
【问题描述】:

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

我们是否应该编写自己的包装类来执行此操作,以便可以使用 Java 7 的 ARM 功能?

【问题讨论】:

  • 会话工厂每次都会为您生成会话对象。会话可以自动刷新,您只需要以某种方式对其进行配置。

标签: java hibernate session try-catch


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    这已在休眠版本 5 中得到修复。 如果您可以升级到版本 5,请使用它。 支持的 Jira 票证

    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())) {
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-18
      • 1970-01-01
      • 1970-01-01
      • 2022-11-15
      • 2013-03-15
      • 1970-01-01
      • 2014-08-14
      • 2015-01-04
      相关资源
      最近更新 更多