Должен ли я пытаться перехватить какие-либо исключения из запросов EnityManager? - PullRequest
0 голосов
/ 02 февраля 2011

Я обычно размещаю свои методы Java SE следующим образом.Должен ли я попытаться поймать какие-либо исключения для простых чтений, как это?Я вижу использование защелок для любых вставок, но в этом я не вижу необходимости.Просто спрашиваю предложения.

 public List<PkgLineStateHistory> findAllStateHistory() {

    EntityManager em = getEntityManager();
    List<PkgLineStateHistory> list = null;
    try {
        return em.createNamedQuery("PkgLineStateHistory.findAll").getResultList();          
    } finally {
        em.close();
    }
}

Ответы [ 2 ]

1 голос
/ 04 февраля 2011

Для приложений Java SE (как в вашем случае) рекомендуется закрывать EM, поскольку вы, вероятно, управляете EntityManagerFactory самостоятельно.

В управляемой среде, как внутри контейнера Java EE, предоставляющего EM, вам не нужно закрывать его, так как контейнер управляет им. Звучит банально, но не всегда очевидно; -)

1 голос
/ 02 февраля 2011

Вам нужно, чтобы исключения выходили за пределы границ ваших транзакций, в противном случае ваши транзакции не будут откатываться (если вы не обработаете свои транзакции явно, а это больше работы, чем нужно).

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

FWIW, большинство веб-приложений, которые я видел, позволяли исключениям всплыть полностью и имеют некоторый общий механизм обработки ошибок, который вызывает соответствующий ответ. Только ловите исключения, если вы собираетесь что-то с ними сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...