Saya baru-baru ini mengevaluasi dan memilih kerangka kerja bertahan untuk proyek java dan temuan saya adalah sebagai berikut:
Apa yang saya lihat adalah bahwa dukungan yang mendukung JDO terutama:
- Anda dapat menggunakan sumber data non-sql, db4o, hbase, ldap, bigtable, couchdb (plugin untuk cassandra) dll.
- Anda dapat dengan mudah beralih dari sumber data sql ke non-sql dan sebaliknya.
- tidak ada objek proxy dan karenanya lebih sedikit rasa sakit sehubungan dengan implementasi kode hash () dan equals ()
- lebih banyak POJO dan karenanya lebih sedikit penyelesaian yang dibutuhkan
- mendukung lebih banyak jenis hubungan dan bidang
dan dukungan yang mendukung JPA terutama:
- lebih populer
- jdo sudah mati
- tidak menggunakan peningkatan bytecode
Saya melihat banyak posting pro-JPA dari pengembang JPA yang jelas-jelas tidak menggunakan JDO / Datanucleus yang menawarkan argumen yang lemah karena tidak menggunakan JDO.
Saya juga melihat banyak posting dari pengguna JDO yang telah bermigrasi ke JDO dan hasilnya jauh lebih bahagia.
Sehubungan dengan JPA menjadi lebih populer, tampaknya ini sebagian karena dukungan vendor RDBMS daripada yang secara teknis unggul. (Kedengarannya seperti VHS / Betamax bagi saya).
JDO dan implementasi rujukannya Datanucleus jelas tidak mati, seperti yang ditunjukkan oleh adopsi Google untuk GAE dan pengembangan aktif pada kode sumber (http://sourceforge.net/projects/datanucleus/).
Saya telah melihat sejumlah keluhan tentang JDO karena peningkatan bytecode, tetapi belum ada penjelasan mengapa itu buruk.
Bahkan, di dunia yang semakin terobsesi oleh solusi NoSQL, JDO (dan implementasi datanucleus) tampaknya taruhan yang jauh lebih aman.
Saya baru saja mulai menggunakan JDO / Datanucleus dan mengaturnya sehingga saya dapat beralih dengan mudah antara menggunakan db4o dan mysql. Sangat membantu untuk pengembangan cepat untuk menggunakan db4o dan tidak perlu terlalu khawatir tentang skema DB dan kemudian, setelah skema tersebut distabilkan untuk digunakan ke database. Saya juga merasa yakin bahwa nantinya, saya bisa mengerahkan semua / sebagian dari aplikasi saya ke GAE atau memanfaatkan penyimpanan terdistribusi / mengurangi peta a la hbase / hadoop / cassandra tanpa terlalu banyak refactoring.
Saya menemukan rintangan awal untuk memulai dengan Datanucleus sedikit rumit - Dokumentasi di situs web datanucleus agak sulit untuk dipahami - tutorialnya tidak mudah diikuti seperti yang saya inginkan. Karena itu, dokumentasi yang lebih rinci tentang API dan pemetaan sangat baik setelah Anda melewati kurva pembelajaran awal.
Jawabannya, itu tergantung apa yang Anda inginkan. Saya lebih suka memiliki kode yang lebih bersih, opsi no-vendor-lock-in, lebih berorientasi pojo, nosql lebih populer.
Jika Anda ingin perasaan rewel hangat bahwa Anda melakukan hal yang sama dengan mayoritas pengembang lain / domba, pilih JPA / hibernasi. Jika Anda ingin memimpin di bidang Anda, uji drive JDO / Datanucleus dan buat pikiran Anda sendiri.