ฉันเพิ่งได้รับการประเมินและเลือกกรอบการติดตาสำหรับโครงการ java และการค้นพบของฉันมีดังนี้:
สิ่งที่ฉันเห็นคือการสนับสนุนJDOนั้นสำคัญที่สุด:
- คุณสามารถใช้แหล่งข้อมูลที่ไม่ใช่ sql, db4o, hbase, ldap, bigtable, couchdb (ปลั๊กอินสำหรับคาสซานดรา) เป็นต้น
- คุณสามารถเปลี่ยนจากแหล่งข้อมูล sql เป็น non-sql datasource และในทางกลับกันได้
- ไม่มีวัตถุพร็อกซีและดังนั้นจึงมีความเจ็บปวดน้อยลงเกี่ยวกับการใช้ hashcode () และเท่ากับ ()
- POJO ที่มากขึ้นและการแก้ไขปัญหาจึงน้อย
- รองรับความสัมพันธ์และประเภทฟิลด์เพิ่มเติม
และการสนับสนุนแก่JPAนั้นเป็นหลัก:
- เป็นที่นิยมมากขึ้น
- jdo ตายแล้ว
- ไม่ได้ใช้การปรับปรุง bytecode
ฉันเห็นโพสต์ Pro-JPA จำนวนมากจากผู้พัฒนา JPA ที่ไม่ได้ใช้ JDO / Datanucleus อย่างชัดเจนซึ่งเสนอข้อโต้แย้งที่อ่อนแอสำหรับการไม่ใช้ JDO
ฉันยังเห็นโพสต์จำนวนมากจากผู้ใช้ JDO ที่ย้ายมาที่ JDO และมีความสุขมากขึ้น
ในแง่ของ JPA ได้รับความนิยมมากขึ้นดูเหมือนว่านี่เป็นส่วนหนึ่งเนื่องจากการสนับสนุนผู้ขาย RDBMS มากกว่าที่จะเป็นเทคนิคที่เหนือกว่า (ฟังดูเหมือน VHS / Betamax กับฉัน)
การใช้งาน JDO และมันคือการอ้างอิง Datanucleus ยังไม่ตายอย่างที่แสดงโดยการยอมรับของ Google สำหรับ GAE และการพัฒนาอย่างแข็งขันในซอร์สโค้ด (http://sourceforge.net/projects/datanucleus/)
ฉันได้เห็นการร้องเรียนจำนวนมากเกี่ยวกับ JDO เนื่องจากการปรับปรุง bytecode แต่ยังไม่มีคำอธิบายว่าทำไมมันถึงไม่ดี
ในความเป็นจริงในโลกที่กำลังหมกมุ่นอยู่กับโซลูชั่น NoSQL มากขึ้น JDO (และการใช้งานฐานข้อมูล) ดูเหมือนจะปลอดภัยกว่ามาก
ฉันเพิ่งเริ่มใช้ JDO / Datanucleus และตั้งค่าเพื่อให้ฉันสามารถสลับระหว่างการใช้ db4o และ mysql ได้อย่างง่ายดาย มันมีประโยชน์สำหรับการพัฒนาอย่างรวดเร็วในการใช้ db4o และไม่ต้องกังวลมากเกินไปเกี่ยวกับ schema ของ DB จากนั้นเมื่อ schema นั้นมีความเสถียรในการปรับใช้กับฐานข้อมูล ฉันยังรู้สึกมั่นใจว่าในภายหลังฉันสามารถปรับใช้ทั้งหมด / บางส่วนของแอปพลิเคชันของฉันไปยัง GAE หรือใช้ประโยชน์จากที่เก็บข้อมูลแบบกระจาย / แผนที่ - ลด la hbase / hadoop / Cassandra โดยไม่ต้องทำการปรับสภาพมากเกินไป
ฉันพบอุปสรรค์เริ่มต้นของการเริ่มต้นใช้งาน Datanucleus นิดหน่อย - เอกสารบนเว็บไซต์ดาต้านิวเคลียสนั้นยากที่จะเข้าใจ - บทเรียนไม่ง่ายที่จะติดตามอย่างที่ฉันชอบ ต้องบอกว่าเอกสารรายละเอียดเพิ่มเติมเกี่ยวกับ API และการแมปนั้นดีมากเมื่อคุณผ่านช่วงการเรียนรู้เริ่มต้น
คำตอบคือมันขึ้นอยู่กับสิ่งที่คุณต้องการ ฉันอยากจะมีรหัสที่สะอาดกว่าไม่มีผู้ขายล็อคอินตัวเลือกเพิ่มเติม pojo-orientated, nosql ข้อที่นิยมมากขึ้น
หากคุณต้องการความรู้สึกจุกจิกอบอุ่นที่คุณกำลังทำเช่นเดียวกันกับนักพัฒนา / แกะส่วนใหญ่ให้เลือก JPA / hibernate หากคุณต้องการเป็นผู้นำในสาขาของคุณลองขับ JDO / Datanucleus และสร้างความคิดของคุณเอง