Добрый день.
Сразу оговорюсь, никого не хочу задеть и не хочу обидеть. Недавно начал погружаться в Java EE и хочу разобраться.
Сейчас разбираюсь с JPA. Как мне показалось, этот метод дает больше проблем, чем преимуществ. Когда-то давно, когда я еще не знал о Java EE, я реализовал некое подобие JPA. Я помню вечные муки с зависимостями. В одном месте подгрузка нужна, в другом нет, в третьем не понятно сразу. Часть полей нужна, часть нет и даже ленивая подгрузка не спасала.
Для изучения EE я купил книгу
Изучаем Java EE 7, Гонсалвес Энтони. Я был в восторге от CDI, в EJB не "въехал" (отдельным вопросом спрошу), но больше всего меня разочаровал JPA тем, что не дал железобетонных решений проблем, а лишь создал впечатление костыль-обертки вокруг JDBC.
Попробуем сравнить. Для начала плюсы:
1) Конечно, в коде удобнее использовать объекты, а не, например, Map-ы (хотя с выводом типов и метамоделью для последних можно еще по сравнивать).
2) База-независимость. Это, конечно, же спорный вопрос. Я сильно не вникал, но боюсь, к примеру, полнотекстовый индекс и поиск по нему не будет база-независимым. Если вообще возможен будет. Поправьте, если я где-то не прав.
3) Отсутствие SQL в коде. Конечно, кто-то скажет, что это дело вкуса, но многие меня поддержат.
4) Опыт работы с JPA в резюме.
Прошу читателей пополнить список.
Теперь проблемы, которые я вижу.
1) Возможны неоптимальные запросы к базе. Я с этим не сталкивался, прочел в какой-то статье про опыт. Пожалуй, это самый проблемный вопрос.
2) Проблемы с зависимыми строками, которые я описал выше.
3) В отчетах всё-равно, скорее всего придется "опуститься" до sql.
4) Некая ограниченность. Чтобы сделать, к примеру, someField += 1 в базе для нескольких строк придется нелегко. А что взамен?
Прошу читателей пополнить и этот список.
Буду благодарен за реальный долговременный опыт работы с JPA, толковые книги. Такие в которых описывается не техническая работа, а методика применения (в каких случаях какие методы применять).
# По словам "опыт работы с JPA" находятся вакансии:)
Спасибо.