Про передачу exceptions в разных слоях
От: Аноним  
Дата: 17.04.14 11:03
Оценка:
Добрый день,

Сервис, имеющий доступ к базе просает javax.persistence.EntityNotFound exception, при попытке найти запись по ID
Это JPA exception, хотелось бы его спрятать, чтобы клиент ничего не знал о нем.
По идее, допустум сервис — фасад для клиента (веб формы, спринг формы, servleta, не важно — facade для web слоя), должен сделать try/catch, и бросить, к примеру

RuntimeException("Could not find any record", jpaException)

Но получается, что желание оградить конечного клиента — от знания, что он имеет дела с jpa технологией или с зависимостью от jpa, приводит к усложнению обработки в facade.

Есть какие нибудь идеи, мысли на этот счет?

В идеале хочется — чтобы сервис, обращающийся к EntityManager и бросающий JPA exceptions, не видел был бы наружу совсем, спрятан за busness facade,

Web клиеннты, допустим на уровне зависимостей зависят лишь от последних — бизнесс интерфейсов, и ни в рантайм, ни в компайлтайм не видят javax.persistence package и его классы.

Но при этом код должен быть максимально простым для понимания. Сейчас если в каждом методе facade кетчить все JPA ексепшен, получаются, они ведут себя при попытке спрятать их между слоями — как catched exception — заставляют явно их обрабатывать программиста.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.