Зачем объективировать вместо JDO? - PullRequest
12 голосов
/ 21 июля 2011

Я приближаюсь к миру Gwt + Gae.

Моя основная потребность - отправить по проводам Gwt-Rpc мои классы сущностей, не дублируя их в DTO.

Объективить обещание сделать это довольно хорошо. Он утверждает, что скрывает всю «сложность Jdo».

Я никогда не работал с технологиями Jpa или Jdo. Где все сложности?

Я имею в виду, можете ли вы дать мне несколько простых примеров сложных задач в JDO, тривиально выполненных Objectify?

Может быть, отношения?

Ответы [ 2 ]

9 голосов
/ 19 ноября 2011

Я думаю, что с JDO / JPA легко играть на уровне "Hello World".Но это меняется, как только вам нужно что-то более реальное, такое как составные ключи, умножение отношений между сущностями и т. Д. Реализация JDO GAE довольно сложна и трудна для понимания новичками, частично из-за неподдерживаемых функций, обходных путей и расширений.JDO предназначен для работы «везде», что означает его высокую абстракцию и общий характер.Отлично подходит для переносимости, но это также означает, что он может не идеально подходить для конкретного движка, такого как GAE, с его уникальным хранилищем данных.Банки Datanucleus / JDO / JPA довольно большие (всего ~ 2,3 мб), в то время как баночка Objectify довольно мала.JDO / JPA может выполнять сканирование пути к классам при запуске, чтобы найти и зарегистрировать ваши объекты, что может увеличить время загрузки.Затраченное время будет пропорционально количеству классов в вашем проекте.

В соответствии с примером, я думаю, с точки зрения количества кода пример JDO / JPA будет казаться проще, чем множество классов DAOдля Objectify, но в целом, обслуживание кода Objectify будет проще для инженера, потому что вам не нужно идти по минному полю, думая, что можно сломать в JDO:)

1 голос
/ 19 ноября 2011

Одним из примеров сложности JDO является просмотр количества состояний, в которых может находиться сущность. В качестве примера того, как это может быть подавляющим на первый взгляд, прокрутите вниз до этой страницы и посмотрите на это состояние диаграмма. Objectify не нуждается в такой диаграмме состояний.

Другая сложная часть JDO - это вся «магия», которая происходит за кулисами, что иногда затрудняло отладку. Конечно, это на самом деле не волшебство, просто перезапись байт-кода, но это довольно сложно.

Наконец, JDO - это общий API. Он предназначен для работы с хранилищами объектов, базами данных SQL и кто знает, что еще. Иногда трудно увидеть связь между определенной концепцией JDO и тем, что будет происходить в хранилище данных. API Objectify тесно связан с хранилищем данных, что упрощает понимание происходящего.

...