7

私は、Java EE 7 のコア インターフェイスが拡張されるAutoCloseableかどうかについて疑問に思っていました。(コア インターフェイスとは、主に などを意味EntityManagerしますが、自動的に閉じられる可能性のある他のインターフェイスやクラスがあるかどうかはわかりません。)

私はそうすべきだと思います。これが私の仮定の根拠です。

Java 6Connectionは拡張さえしませんがCloseableJava 7Connectionは拡張します ( java.sqlパッケージAutoCloseableの他のいくつかのインターフェースと同様)。

Java 7 の声明を考えると、インターフェースのようなものは、私たちに役立つようにEntityManager拡張できますか? または、自動で魔法のように閉じるのは複雑すぎますか?AutoCloseabletry-with-resourcesEntityManager

この特定の機能はJSR-342の一部と見なされますか?

4

1 に答える 1

5

独自の JPA オブジェクトを管理している場合、try-with-resources は、EntityManagers に関して、およびより少ない範囲で EntityManagerFactory に関して持つと便利です。

私は、インターフェイスのAutoCloseableバージョンを実装するjava.lang.reflect.ProxyでEntityManagerFactory をラップするユーティリティを作成することにしました。次に、呼び出しハンドラーは createEntityManager() への呼び出しをインターセプトして、AutoCloseable も実装する基になる EntityManager インスタンスのプロキシ バージョンを返すことができるようにします。

コンテナー管理の JPA オブジェクトの世界で作業する方がはるかに簡単だと思いますが、単純な webapp での実行に行き詰まっている場合は、これでうまくいくかもしれません。

于 2013-08-21T14:42:14.007 に答える