Могут ли основные интерфейсы Java EE 7 (EntityManager, ...) расширять AutoClosable? - PullRequest
6 голосов
/ 08 декабря 2011

Я задавался вопросом, будут ли основные интерфейсы Java EE 7 расширяться AutoCloseable или нет.(Под базовыми интерфейсами я в основном имею в виду EntityManager и тому подобное, однако я точно не знаю, существуют ли другие интерфейсы или классы, которые потенциально могут быть закрыты автоматически.)

Я думаю, что они должны , и вот основание моего предположения.

Java 6 Connection даже не расширяется Closeable, однако Java 7 Connection расширяет AutoCloseable (как и некоторые другие интерфейсы в пакете java.sql ).

Может интерфейсыкак EntityManager расширить AutoCloseable таким образом, чтобы оно служило нам хорошо, учитывая оператор Java 7 try-with-resources ?Или автоматически закрывать EntityManager слишком сложно?

Считается ли эта особенность частью JSR-342 ?

1 Ответ

5 голосов
/ 21 августа 2013

Если вы управляете своими собственными JPA-объектами, тогда попробовать использовать ресурсы с EntityManager и, в меньшей степени, с EntityManagerFactory, очень полезно.

Я решил создать утилиту, которая упаковывает EntityManagerFactory в java.lang.reflect.Proxy , которая реализует AutoCloseable версию интерфейса. Затем обработчик вызова перехватывает вызовы createEntityManager (), чтобы он мог возвращать прокси-версии базовых экземпляров EntityManager, которые также реализуют AutoCloseable.

Я думаю, что намного проще работать в мире управляемых контейнером объектов JPA, но если вы застряли в простом веб-приложении, это может сработать для вас.

...