Подтвердить что ты не робот

Java AppEngine: JDO или JPA, как выбрать?

Плюсы и минусы выбора JDO или JPA для приложения Grails, которое будет запущено в Google AppEngine

4b9b3361

Ответ 1

Я понимаю, почему вы выбрали JDO. Не знаю, что такое "дефолт", на который ссылается другой плакат. JDO - хранилище данных-агностик. JPA - нет. JDO позволяет выбирать группы. JPA - нет. JDO позволяет идентифицировать данные хранилища данных. JPA - нет. JDO разрешает транзакции хранилища данных. JPA - нет. Все это публичная запись http://db.apache.org/jdo/jdo_v_jpa.html

JDO и JPA не заполняют одно и то же пространство проблем. Они перекрываются только для СУБД. JPA предназначен только для RDBMS.JPA не проще, о чем свидетельствует сравнение API на http://db.apache.org/jdo/jdo_v_jpa_api.html

- Энди (DataNucleus)

Ответ 2

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

Ответ 3

Кстати, у Grails есть постоянство сохранения данных поверх Hibernate. Как вы думаете, JDO поможет вам в чем-то, что Hibernate не будет? Я не понимаю, почему можно было бы выбрать JDO по умолчанию.

Что касается JPA, я бы рекомендовал использовать JPA, Hibernate-реализацию JPA, которая удобна с Grails, а не какой-либо из функций Hibernate, если только это не является убедительным.

[Больше не актуально после значительного изменения вопроса]

Совершенно прекрасно иметь операции CRUD в вашей сущности. Но бывают случаи, когда вы можете работать над несколькими объектами, в этом случае слой становится удобным и чистым, ИМХО. Опять же, это вопрос требования.

Ответ 4

[Больше не актуально после значительного изменения вопроса]

Взгляните на следующие статьи:

http://www.infoq.com/news/2007/09/jpa-dao

Похоже, что это действительно зависит от характера вашего приложения и его размера. JPA проще, поэтому я придерживаюсь этого и стараюсь избегать слоя DAO в вашем приложении, при условии, что это довольно небольшое и простое приложение.