Почему Objectify вместо JDO?

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

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

Задайте обещание сделать это довольно хорошо. Он утверждает, что скроет всю "сложность Jdo".

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

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

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

Ответ 1

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

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

Ответ 2

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

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

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