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