7

我想知道,Java EE 7 的核心接口是否会扩展AutoCloseable。(我主要指的是核心接口EntityManager等,但我不确定是否有其他接口或类可能会自动关闭。)

我认为他们应该,这是我假设的基础。

Java 6Connection甚至没有 extend Closeable,但是Java 7 的Connectionextends AutoCloseable(就像java.sql包中的其他几个接口一样)。

考虑到Java 7 的声明,接口之类的EntityManager扩展AutoCloseable方式能否很好地为我们服务?或者神奇地关闭自动功能太复杂了?try-with-resourcesEntityManager

这个特殊功能是否被认为是JSR-342的一部分?

4

1 回答 1

5

如果您正在管理自己的 JPA 对象,那么 try-with-resources 对于 EntityManagers 和在较小程度上的 EntityManagerFactory 来说是一件好事。

我选择创建一个实用程序,将 EntityManagerFactory 包装在java.lang.reflect.Proxy中,实现接口的AutoCloseable版本。然后调用处理程序拦截对 createEntityManager() 的调用,因此它可以返回也实现 AutoCloseable 的底层 EntityManager 实例的代理版本。

我认为在容器管理的 JPA 对象的世界中工作要容易得多,但如果你被困在一个简单的 web 应用程序中,那么这可能对你有用。

于 2013-08-21T14:42:14.007 回答