Реализация Spring, Morphia и DataAccessException


Я использую морфий и MongoDB с моим весенним приложением. Я вижу во многих примерах проектов, что многие методы интерфейса службы вызывают исключение DataAccessException. Из того, что я могу сказать, это исключение выбрасывается из различных классов фреймворка, чтобы упростить обработку исключений для различных реализаций доступа к данным.

На данный момент я предполагаю, что я должен поймать любые ошибки, вызванные Morphia и бросить исключение DataAccessException из моей реализации службы. Итак, мой вопрос:, должен ли я моделировать этот подход с помощью моих реализаций служб, использующих Morphia? Или, возможно, я просто не понимаю этого.

1 3

1 ответ:

Это имеет смысл, если вы хотите, чтобы ваша бизнес-логика могла реагировать на конкретные типы DataAccessException, не будучи зависимой от типов Morphia/Mongo.

Самый простой способ сделать это-написать класс, который реализует PersistenceExceptionTranslator, и который знает, как перевести исключения Morphia/Mongo в DataAccessException. Объявите этот класс как Боб, и Spring автоматически попросит его перевести исключения, если ваш класс DAO снабжен аннотацией @Repository.

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