Изменения

О Java ORM

1155 байтов добавлено, 18:49, 16 февраля 2016
м
Нет описания правки
== JPA: [http://hibernate.org/orm/ Hibernate], [http://eclipse.org/eclipselink/ EclipseLink ] ==
Плюсы:
* Умеет Умеют дохрена всего :)* Например, есть В Hibernate есть Envers, из коробки умеющий логгировать историю изменений сущностей в отдельные таблицы* Для получения красивого Fluent API запросов вместо HQL/JPQL-литералов можно подключить [http://www.querydsl.com/ Querydsl]
Минусы:
* Несколько Немного монструозны(перегружены функционалом).* Возможно, не вполне идеальна логика отображения - конструирование объекта всегда связано с десериализацией, для сохранения ID связанных объектов без самих объектов применяются proxy-классы и ленивая подгрузка (нет возможности одно и то же поле, скажем, person_id, видеть и в виде ID, и в виде объекта)...* HQL/JPQL - всё-таки недоразумение. Не могу понять смысл реализации собственного строкового языка запросов - SQL если уж во что-то заворачивать, то во что-то объектно-структурированное - хотя бы в объект типа "запрос" с полями tables, where, order by, group by и т.п., но не снова в строковой же литерал!* Объекты запросов есть в виде Criteria, но они не очень удобны.
== [https://github.com/ActiveJpa/activejpa ActiveJPA] ==
== [http://ebean-orm.github.io/ Ebean ORM] ==
Плюсы:* Также довольно близок к Active Record. ПроксейПо большей части — похож на JPA, сессийте же яйца, persistence manager'ов, DAO, репозиториев и attach/detach тоже неттолько в профиль.* Использование Классы размечаются ровно теми же JPA-аннотаций для разметки классов (автор считаетаннотациями, что эта часть спецификации JPA очень разумна и скорее всего )* Модель хранит старые ("чистые") значения полей до сохранения* Наличие встроенных хуков для добавления аудита а EbeanServer — тот же аналог сессии или логгирования истории* Есть Fluent API для запросов* Есть поддержка массовой ленивой загрузки связейpersistence manager’а.
Минусы:* Пока не найдено :))Из плюсов можно отметить разве что наличие Fluent API для запросов вместо JPQL. Из минусов — по слухам отсутствует поддержка сортированных one-to-many и many-to-many коллекций.