Я недавно оценил и выбрал постоянную среду для проекта Java, и мои выводы заключаются в следующем:
Я вижу, что поддержка в пользу JDO в первую очередь:
- Вы можете использовать источники данных не-sql, db4o, hbase, ldap, bigtable, couchdb (плагины для cassandra) и т. д.
- Вы можете легко переключиться с источника данных SQL на источник данных, отличный от SQL, и наоборот.
- нет прокси-объектов и, следовательно, меньше проблем с реализациями hashcode () и equals ()
- больше POJO и, следовательно, меньше обходных путей
- поддерживает больше типов отношений и полей
и поддержка в пользу JPA в первую очередь:
- более популярным
- Джейдо мертв
- не использует улучшение байт-кода
Я вижу много сообщений про JPA от разработчиков JPA, которые явно не использовали JDO / Datanucleus, предлагая слабые аргументы в пользу того, чтобы не использовать JDO.
Я также вижу много сообщений от пользователей JDO, которые перешли на JDO и в результате стали намного счастливее.
В связи с тем, что JPA более популярен, кажется, что это отчасти связано с поддержкой поставщиков СУБД, а не с технической точки зрения. (Звучит как VHS / Betamax для меня).
JDO и его эталонная реализация Datanucleus явно не мертвы, о чем свидетельствует принятие Google его для GAE и активная разработка исходного кода (http://sourceforge.net/projects/datanucleus/).
Я видел много жалоб на JDO из-за улучшения байт-кода, но пока нет объяснения, почему это плохо.
На самом деле, в мире, который становится все более и более одержимым решениями NoSQL, JDO (и реализация datanucleus) кажется гораздо более безопасной ставкой.
Я только начал использовать JDO / Datanucleus и настроил его так, чтобы я мог легко переключаться между использованием db4o и mysql. Для быстрой разработки полезно использовать db4o и не нужно слишком беспокоиться о схеме БД, а затем, как только схема стабилизируется для развертывания в базе данных. Я также уверен в том, что позже я смогу развернуть все / часть своего приложения в GAE или воспользоваться преимуществами распределенного хранилища / преобразования карт по принципу hbase / hadoop / cassandra без слишком большого рефакторинга.
Я обнаружил, что первоначальное препятствие для начала работы с Datanucleus немного сложнее. С документацией на сайте datanucleus довольно сложно разобраться - учебники не так просты, как мне хотелось бы. Тем не менее, более детальная документация по API и отображению очень хороша, как только вы пройдете начальную кривую обучения.
Ответ, это зависит от того, что вы хотите. Я предпочел бы иметь более чистый код, без привязки к поставщику, более ориентированный на pojo, варианты nosql, более популярные.
Если вам нужно теплое суетливое ощущение, что вы делаете то же самое, что и большинство других разработчиков / овец, выберите JPA / hibernate. Если вы хотите стать лидером в своей области, протестируйте диск JDO / Datanucleus и решитесь сами.