Gần đây tôi đã đánh giá và chọn một khung kiên trì cho một dự án java và kết quả của tôi như sau:
Những gì tôi đang thấy là sự hỗ trợ có lợi cho JDO chủ yếu là:
- bạn có thể sử dụng các nguồn dữ liệu không phải là sql, db4o, hbase, ldap, bigtable, couchdb (plugin cho cassandra), v.v.
- bạn có thể dễ dàng chuyển từ nguồn dữ liệu sql sang nguồn dữ liệu không phải sql và ngược lại.
- không có đối tượng proxy và do đó ít đau hơn đối với việc triển khai hashcode () và bằng ()
- POJO nhiều hơn và do đó cần ít cách giải quyết hơn
- hỗ trợ nhiều mối quan hệ và loại trường
và sự hỗ trợ có lợi cho JPA là chủ yếu:
- phổ biến hơn
- jdo đã chết
- không sử dụng tăng cường mã byte
Tôi đang thấy rất nhiều bài viết ủng hộ JPA từ các nhà phát triển JPA, những người rõ ràng không sử dụng JDO / Datanucleus cung cấp các đối số yếu cho việc không sử dụng JDO.
Tôi cũng đang thấy rất nhiều bài đăng từ người dùng JDO đã di chuyển sang JDO và kết quả là hạnh phúc hơn nhiều.
Đối với JPA là phổ biến hơn, có vẻ như điều này một phần là do sự hỗ trợ của nhà cung cấp RDBMS chứ không phải là nó vượt trội về mặt kỹ thuật. (Âm thanh như VHS / Betamax với tôi).
JDO và triển khai tham chiếu của nó Datanucleus rõ ràng không chết, như được thể hiện bằng việc áp dụng nó cho GAE và phát triển tích cực trên mã nguồn (http://sourceforge.net/projects/datanucleus/).
Tôi đã thấy một số khiếu nại về JDO do tăng cường mã byte, nhưng chưa có lời giải thích nào cho lý do tại sao nó xấu.
Trong thực tế, trong một thế giới ngày càng bị ám ảnh bởi các giải pháp NoQuery, JDO (và việc triển khai datanucleus) dường như an toàn hơn nhiều.
Tôi mới bắt đầu sử dụng JDO / Datanucleus và đã thiết lập nó để tôi có thể dễ dàng chuyển đổi giữa việc sử dụng db4o và mysql. Thật hữu ích cho việc phát triển nhanh để sử dụng db4o và không phải lo lắng quá nhiều về lược đồ DB và sau đó, khi lược đồ được ổn định để triển khai vào cơ sở dữ liệu. Tôi cũng cảm thấy tự tin rằng sau này, tôi có thể triển khai tất cả / một phần ứng dụng của mình lên GAE hoặc tận dụng lưu trữ phân tán / giảm bản đồ một la hbase / hadoop / cassandra mà không cần tái cấu trúc quá nhiều.
Tôi thấy trở ngại ban đầu khi bắt đầu với Datanucleus hơi khó khăn - Tài liệu trên trang web datanucleus hơi khó để vào - các hướng dẫn không dễ thực hiện như tôi muốn. Phải nói rằng, tài liệu chi tiết hơn về API và ánh xạ là rất tốt khi bạn vượt qua giai đoạn học tập ban đầu.
Câu trả lời là, nó phụ thuộc vào những gì bạn muốn. Tôi thà có mã sạch hơn, không có nhà cung cấp khóa, định hướng pojo hơn, các tùy chọn nosql phổ biến hơn.
Nếu bạn muốn cảm giác ấm áp cầu kỳ mà bạn đang làm giống như phần lớn các nhà phát triển / cừu khác, hãy chọn JPA / hibernate. Nếu bạn muốn dẫn đầu trong lĩnh vực của mình, hãy lái thử JDO / Datanucleus và làm cho tâm trí của bạn lên.