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

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

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

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

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

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

Может отношения?


person Fabio B.    schedule 20.07.2011    source источник
comment
Может быть, было бы полезно, если бы у кого-то был образец проекта (может быть, зоомагазин); но да, я действительно не вижу ничего в документах объективации, что заставляет меня думать, что в JDO было бы проще. Я понимаю спрос на него. Когда я начал работать над движком приложения, мне сразу же захотелось, чтобы был доступен SQL, чтобы я мог использовать ORM, например Hibernate или MyBatis.   -  person Dave    schedule 23.10.2011


Ответы (2)


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

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

person expert    schedule 18.11.2011
comment
Не могли бы вы рассказать мне больше о составных ключах и отношениях умножения, ...? Что ты конкретно имеешь ввиду? Можете ли вы быстро написать пример? Кроме того, есть ли у вас объектный DAO для каждой сущности в вашем проекте? Как, по-вашему, я могу использовать общее дао Д. Чендлера? turbomanage.wordpress.com/2010/02/09 / - person Fabio B.; 21.11.2011

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

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

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

person Peter Recore    schedule 19.11.2011
comment
Так что же такое состояния сущностей в мире Objectify? - person Fabio B.; 21.11.2011