Нещодавно я оцінив і обрав постійну основу для проекту java, і мої висновки такі:
Я бачу, що підтримка на користь JDO полягає насамперед:
- ви можете використовувати не-sql джерела даних, db4o, hbase, ldap, bigtable, couchdb (плагіни для кассандри) тощо.
- ви можете легко перейти з sql на не-sql джерело даних і навпаки.
- немає проксі-об'єктів і, отже, менше болю щодо хеш-коду () та рівності () реалізації
- більше POJO і, отже, потрібно менше обхідних шляхів
- підтримує більше типів відносин і полів
і підтримка на користь JPA полягає насамперед:
- більш популярні
- jdo мертвий
- не використовує розширення байт-коду
Я бачу багато публікацій про JPA від розробників JPA, які явно не використовували JDO / Datanucleus, пропонуючи слабкі аргументи за те, щоб не використовувати JDO.
Я також бачу багато публікацій від користувачів JDO, які перейшли до JDO і в результаті набагато щасливіші.
Що стосується популярності JPA, то, здається, це частково пояснюється підтримкою постачальників RDBMS, а не технічно перевершує. (Мені звучить як VHS / Betamax).
JDO та його посилання на реалізацію Datanucleus явно не мертві, як показано прийняттям Google від Google для GAE та активної розробки вихідного коду (http://sourceforge.net/projects/datanucleus/).
Я бачив ряд скарг на JDO через розширення байт-коду, але поки немає пояснень, чому це погано.
Насправді, у світі, який стає все більш одержимим рішеннями NoSQL, JDO (та реалізація данихнуклеусів) здається набагато безпечнішою.
Щойно я почав використовувати JDO / Datanucleus і налаштував його так, щоб я міг легко перемикатися між використанням db4o та mysql. Для швидкої розробки корисно використовувати db4o і не надто турбуватися про схему БД, а потім, як тільки схема стабілізується, розгортається до бази даних. Я також впевнений, що пізніше я міг би розгорнути всю / частину своєї програми до GAE або скористатися розподіленим сховищем / картою-зменшити а-ля hbase / hadoop / cassandra, не надто багато рефакторингу.
Я знайшов початкові перешкоди для початку роботи з Datanucleus трохи складними - Документація на веб-сайті datanucleus трохи важко потрапити - підручники не так легко виконувати, як хотілося б. Сказавши це, більш детальна документація щодо API та картографування є дуже хорошою, як тільки ви пройдете початкову криву навчання.
Відповідь - це залежить від того, що ви хочете. Я б скоріше мав чистіший код, не-постачальник-блокування, більш орієнтований на pojo, ноші-вірші, варіанти віршів більш популярні.
Якщо ви хочете відчути тепле метушливе відчуття, що ви робите так само, як і більшість інших розробників / овець, виберіть JPA / сплячку. Якщо ви хочете лідирувати у своїй галузі, пробний диск JDO / Datanucleus і зробіть свій власний розум.