为什么Hibernate没有将会话设为自动关闭?会话的设计是做什么的。
我们应该编写自己的包装类来执行此操作,以便可以使用Java 7的ARM功能吗?
答案 0 :(得分:3)
Hibernate与Java 6兼容。由于{7}在Java 7中引入,它只能由需要Java 7的软件使用。需要Java 7的Hibernate版本可能包含AutoCloseable
实现{ {1}}。
答案 1 :(得分:2)
这已在hibernate版本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())) {
}