为什么 Hibernate 没有将会话设置为可自动关闭?
Why Hibernate didn't make session as Auto Closeable?
为什么 Hibernate 没有将会话设置为自动关闭?这与会话的设计有关。
我们是否应该编写自己的包装器 class 来执行此操作,以便可以使用 Java 7 的 ARM 功能?
Hibernate兼容Java 6.由于AutoCloseable
是在Java7中引入的,所以只能被需要Java的软件使用 7.一个版本需要 Java 7 的 Hibernate 可能包含 Session
实现 AutoCloseable
.
这已在休眠版本 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())) {
}
为什么 Hibernate 没有将会话设置为自动关闭?这与会话的设计有关。
我们是否应该编写自己的包装器 class 来执行此操作,以便可以使用 Java 7 的 ARM 功能?
Hibernate兼容Java 6.由于AutoCloseable
是在Java7中引入的,所以只能被需要Java的软件使用 7.一个版本需要 Java 7 的 Hibernate 可能包含 Session
实现 AutoCloseable
.
这已在休眠版本 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())) {
}