спасибо, что ответили мне. Я прочитал ссылку (весенняя документация) и обнаружил следующее:
"Однако DAO выдает простое HibernateException (которое не проверяется, поэтому его не нужно объявлять или перехватывать), что означает, что вызывающие абоненты могут обрабатывать исключения только как обычно фатальные - если они не хотят зависеть от собственной иерархии исключений Hibernate.
Выявление определенных причин, таких как сбой оптимистической блокировки, невозможно без привязки вызывающей стороны к стратегии реализации. Этот компромисс может быть приемлемым для приложений, которые сильно основаны на Hibernate и / или не нуждаются в какой-либо специальной обработке исключений. "
Мой DAO основан на Plain Hibernate 3 API, поэтому, если я правильно понимаю, мой DAO выдает только простые исключения HibernateException. Они не проверяются и не должны быть объявлены или пойманы.
Если что-то идет не так, с @Transactional вся операция откатывается.
Чтобы убедиться, что все работает так, как я ожидал, я должен привязать свой DAO еще ближе к коду моего приложения. Там я могу проверить, например, возвращен ли объект или нет. (если ноль - иначе)
Я также мог поймать исключение, зарегистрировать его и сообщить пользователю, что что-то пошло не так и что его транзакция не сработала.
Так что на данный момент, я все еще думаю, что - в зависимости от транзакции:
если я могу работать с результатом, все в порядке - если нет, я могу сообщить пользователю.
когда транзакция не указана для возврата результата, я могу использовать try / catch для отлова HibernateException. Но транзакция все еще откатывается тогда? Я думал, что перехват HibernateException позволяет избежать отката транзакции.
Я до сих пор не знаю, что делать. : - (
Кроме этого, к сожалению, я не понимаю, какое отношение к этому имеет обработка исключений MVC (@ExceptionHandler). Была таблица обработанных исключений, но я не нашел HibernateException.
Или вы думаете, это будет работать с этим: @ExceptionHandler (HibernateException.classs)? также вы сказали, что не будете рекомендовать обрабатывать исключения таким образом.