Реализация Spring, Morphia и DataAccessException
Я использую морфий и MongoDB с моим весенним приложением. Я вижу во многих примерах проектов, что многие методы интерфейса службы вызывают исключение DataAccessException. Из того, что я могу сказать, это исключение выбрасывается из различных классов фреймворка, чтобы упростить обработку исключений для различных реализаций доступа к данным.
На данный момент я предполагаю, что я должен поймать любые ошибки, вызванные Morphia и бросить исключение DataAccessException из моей реализации службы. Итак, мой вопрос:, должен ли я моделировать этот подход с помощью моих реализаций служб, использующих Morphia? Или, возможно, я просто не понимаю этого.
1 ответ:
Это имеет смысл, если вы хотите, чтобы ваша бизнес-логика могла реагировать на конкретные типы
Самый простой способ сделать это-написать класс, который реализуетDataAccessException
, не будучи зависимой от типов Morphia/Mongo.PersistenceExceptionTranslator
, и который знает, как перевести исключения Morphia/Mongo вDataAccessException
. Объявите этот класс как Боб, и Spring автоматически попросит его перевести исключения, если ваш класс DAO снабжен аннотацией@Repository
.Однако, если ваша бизнес-логика или логика обработки исключений на самом деле не заботится , какой тип исключения генерируется, тогда, казалось бы, в этом мало смысла.