Мы обнаружили (как и другие), что было просто написать общий DAO в качестве тонкой прокладки поверх вызовов JPA.
Многие просто были на вершине JPA. Например, в начале у нас просто было:
public <T> T update(T object) {
return em.merge(object);
}
Но преимущество наличия слоя в том, что ваш слой расширяемый, а EM - нет.
Позже мы добавили перегрузку:
public Thing update(Thing object) {
// do magic thing processing
}
Итак, наш слой в основном не поврежден, но может обрабатывать пользовательские данные.
Например, позже, поскольку в ранних версиях JPA не было обработки Orphan, мы добавили это в наш бэкэнд-сервис.
Даже простой общий DAO имеет значение, просто как точка абстракции.
Нам просто не нужно было создавать по одному для каждой группы объектов (CustomerDAO, OrderDAO и т. Д.), Как в старые времена.