Как провести различие между ошибками подключения к базе данных и другими исключениями в DataAccessException в Spring Data Jpa - PullRequest
0 голосов
/ 19 февраля 2019

Мне нужно определить исключения ошибок подключения к базе данных по сравнению с другими исключениями и соответственно обработать их в моем обработчике ошибок слушателя kafka.Поскольку все преобразуется в DataAcccessException в Spring Data JPA, мне просто интересно, какие исключения генерируются при сбое подключения во время работы приложения.Рабочая среда: Spring boot 2.x, Spring data jpa, spring-kafka, Java 8

1 Ответ

0 голосов
/ 19 февраля 2019

DataAccessException является только корнем иерархии, ознакомьтесь с подклассами, Spring уже классифицирует тип исключения для вас.

Похоже, вы заинтересованы в экземплярах TransientDataAccessException, который охватывает проблемы с подключением и блокировкой, его описание :

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

Существует исключение NonTransientDataAccessException, которое является чем-то вроде целостности данныхошибки (проверки RI и сбой ограничений):

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

и RecoverableDataAccessException (проблемы с транзакциями):

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

Apidoc показывает, какие подклассы существуют для каждого из них, чтобы вы могли понять, какие ошибкиописывается.

...