О Java ORM
Материал из YourcmcWiki
Версия от 14:21, 16 февраля 2016; VitaliyFilippov (обсуждение | вклад) (Новая страница: «== JPA: Hibernate, EclipseLink == Монструозины. == [https://github.com/ActiveJpa/activejpa ActiveJPA] == Реализация Active Record пов…»)
JPA: Hibernate, EclipseLink
Монструозины.
ActiveJPA
Реализация Active Record поверх JPA.
ActiveJDBC
Плюсы:
- Active Record для Java
- Легковесный:
- Необязательны геттеры/сеттеры, поля можно читать по именам model.get("поле")
- Нет ни проксей, ни сессий, ни persistence manager’ов, ни DAO, ни репозиториев, ни «attach/detach», ни собственного языка запросов
Минусы:
- Неотключаемое автоматическое определение таблиц и типов полей во время выполнения. Также есть автоматическая привязка классов к таблицам по правилам английского языка — извращение, но по крайней мере отключаемое.
- Отсутствие поддержки нескольких схем (#144).
- Трудно во время выполнения явно указать соединение БД, с которым должна работать конкретная модель — несколько соединений указывается только на уровне аннотаций во время компиляции, а в рантайме всегда используется текущее «привязанное» к имени соединение.
- Отсутствие доступа к «старым» («чистым») значениям полей при сохранении модели.
- Отсутствие поддержки композитных первичных ключей — всегда нужна автоинкрементная колонка «id», даже в таблицах отношений «многие ко многим»
Ebean ORM
Плюсы:
- Также довольно близок к Active Record. Проксей, сессий, persistence manager'ов, DAO, репозиториев и attach/detach тоже нет.
- Использование JPA-аннотаций для разметки классов (автор считает, что эта часть спецификации JPA очень разумна и скорее всего )
- Модель хранит старые ("чистые") значения полей до сохранения
- Наличие встроенных хуков для добавления аудита или логгирования истории
- Есть Fluent API для запросов
- Есть поддержка массовой ленивой загрузки связей
Минусы:
- Пока не найдено :))