Niedawno oceniłem i wybrałem ramy trwałości dla projektu Java, a moje ustalenia są następujące:
Widzę, że wsparcie na rzecz JDO to przede wszystkim:
- możesz używać źródeł danych innych niż sql, db4o, hbase, ldap, bigtable, couchdb (wtyczki do cassandra) itp.
- możesz łatwo przełączyć się ze źródła danych sql na inne niż sql i odwrotnie.
- brak obiektów proxy, a tym samym mniej problemów z implementacjami hashcode () i equals ()
- więcej POJO, a tym samym mniej wymaganych obejść
- obsługuje więcej typów relacji i pól
a poparcie na rzecz WZP to przede wszystkim:
- bardziej popularny
- jdo nie żyje
- nie używa rozszerzenia kodu bajtowego
Widzę wiele postów pro-JPA od programistów JPA, którzy wyraźnie nie używali JDO / Datanucleus, oferujących słabe argumenty za nieużywaniem JDO.
Widzę również wiele postów od użytkowników JDO, którzy przenieśli się do JDO i dzięki temu są o wiele szczęśliwsi.
Biorąc pod uwagę większą popularność JPA, wydaje się, że jest to częściowo spowodowane wsparciem dostawców RDBMS, a nie lepszym technicznie. (Dla mnie brzmi jak VHS / Betamax).
JDO i jego referencyjna implementacja Datanucleus najwyraźniej nie jest martwy, jak pokazuje przyjęcie go przez Google do GAE i aktywne tworzenie kodu źródłowego (http://sourceforge.net/projects/datanucleus/).
Widziałem wiele skarg dotyczących JDO z powodu ulepszenia kodu bajtowego, ale nie ma jeszcze wyjaśnienia, dlaczego jest źle.
W rzeczywistości w świecie, który ma coraz większą obsesję na punkcie rozwiązań NoSQL, JDO (i implementacja datanucleus) wydaje się znacznie bezpieczniejszym rozwiązaniem.
Właśnie zacząłem używać JDO / Datanucleus i skonfigurowałem go tak, aby móc łatwo przełączać się między użyciem db4o i mysql. Przy szybkim programowaniu pomocne jest użycie db4o i nie trzeba martwić się zbytnio o schemat bazy danych, a następnie, gdy schemat zostanie ustabilizowany, w celu wdrożenia w bazie danych. Jestem również pewien, że później będę mógł wdrożyć całą / część mojej aplikacji w GAE lub skorzystać z rozproszonej pamięci masowej / map-zredukuj a la hbase / hadoop / cassandra bez zbytniego refaktoryzacji.
Początkowa przeszkoda związana z rozpoczęciem pracy z Datanucleus była trochę skomplikowana - Dokumentacja na stronie internetowej Datanucleus jest trochę trudna do zrozumienia - samouczki nie są tak łatwe do wykonania, jak bym chciał. Powiedziawszy to, bardziej szczegółowa dokumentacja dotycząca API i mapowania jest bardzo dobra, gdy przejdziesz przez początkową krzywą uczenia się.
Odpowiedź brzmi: to zależy od tego, czego chcesz. Wolałbym mieć bardziej przejrzysty kod, brak dostępu do dostawcy, bardziej zorientowane na pojo, opcje nosql a bardziej popularne.
Jeśli chcesz mieć ciepłe, wybredne wrażenie, że robisz to samo, co większość innych programistów / owiec, wybierz JPA / hibernacja. Jeśli chcesz być liderem w swojej dziedzinie, wypróbuj JDO / Datanucleus i podejmij decyzję.