Изменения

Перейти к: навигация, поиск

О Java ORM

3001 байт добавлено, 11:21, 16 февраля 2016
Новая страница: «== JPA: Hibernate, EclipseLink == Монструозины. == [https://github.com/ActiveJpa/activejpa ActiveJPA] == Реализация Active Record пов…»
== JPA: Hibernate, EclipseLink ==

Монструозины.

== [https://github.com/ActiveJpa/activejpa ActiveJPA] ==

Реализация Active Record поверх JPA.

== [http://javalite.io/activejdbc ActiveJDBC] ==

Плюсы:
* Active Record для Java
* Легковесный:
** Необязательны геттеры/сеттеры, поля можно читать по именам <tt><nowiki>model.get("поле")</nowiki></tt>
** Нет ни проксей, ни сессий, ни persistence manager’ов, ни DAO, ни репозиториев, ни «attach/detach», ни собственного языка запросов

Минусы:
* Неотключаемое автоматическое определение таблиц и типов полей во время выполнения. Также есть автоматическая привязка классов к таблицам по правилам английского языка — извращение, но по крайней мере отключаемое.
* Отсутствие поддержки нескольких схем ([https://github.com/javalite/activejdbc/issues/144 #144]).
* Трудно во время выполнения явно указать соединение БД, с которым должна работать конкретная модель — несколько соединений указывается только на уровне аннотаций во время компиляции, а в рантайме всегда используется текущее «привязанное» к имени соединение.
* Отсутствие доступа к «старым» («чистым») значениям полей при сохранении модели.
* Отсутствие поддержки композитных первичных ключей — всегда нужна автоинкрементная колонка «id», даже в таблицах отношений «многие ко многим»

== [http://ebean-orm.github.io/ Ebean ORM] ==

Плюсы:
* Также довольно близок к Active Record. Проксей, сессий, persistence manager'ов, DAO, репозиториев и attach/detach тоже нет.
* Использование JPA-аннотаций для разметки классов (автор считает, что эта часть спецификации JPA очень разумна и скорее всего )
* Модель хранит старые ("чистые") значения полей до сохранения
* Наличие встроенных хуков для добавления аудита или логгирования истории
* Есть Fluent API для запросов
* Есть поддержка массовой ленивой загрузки связей

Минусы:
* Пока не найдено :))

Навигация