2010-02-12 43 views
14

muốn phát triển dự án của tôi trên Google App Engine. Tôi muốn sử dụng bảng lớn của google làm cơ sở dữ liệu. Đối với cơ sở dữ liệu tôi có hai tùy chọn JPA và JDO. Các bạn có gợi ý cho tôi không? Cả hai đều mới mẻ đối với tôi và tôi cần phải học chúng. Vì vậy, tôi sẽ tập trung vào một sau khi trả lời của bạn.Sự khác biệt giữa JPA và JDO?

Trả lời

9

Vì bạn đang sử dụng dữ liệu Nucleus, xem FAQ của họ trên JDO vs JPA. http://www.datanucleus.org/products/accessplatform_2_1/jdo_jpa_faq.html

DataNucleus AccessPlatform hỗ trợ cả thông số kỹ thuật JDO và JPA về sự kiên trì của Java. Như vậy nó không có "lợi ích được trao" trong cả hai công nghệ, tin rằng nó là cho người dùng lựa chọn mà họ thích nhất. Đã có nhiều FUD trên web về JDO và JPA, chủ yếu là do các nhà cung cấp RDBMS gây ra. Câu Hỏi Thường Gặp này sửa chữa nhiều trong số các điểm này

+0

Liên kết này lại chết. –

0

JPA là tiêu chuẩn java hàng đầu cho sự kiên trì. Vì vậy, tôi sẽ nói sử dụng JPA nếu bạn đang sử dụng RDBMS và yêu cầu ORM.
Hibernate thường được sử dụng như triển khai JPA. Nếu bạn cần một số tính năng bổ sung, bạn có thể sử dụng chú thích cụ thể ngủ đông.

Câu hỏi này đã trông sẽ được thảo luận ở đây JDO vs JPA for Java on Google App Engine

+0

Nhưng tôi muốn sử dụng kho dữ liệu google (Bảng lớn) bằng cách sử dụng Dữ liệu hạt nhân .thì tôi làm theo JPA hoặc JDO – user246160

+2

Hibernate có thể "thường được sử dụng như là triển khai JPA" nhưng nó chỉ hoạt động cho RDBMS, và do đó sẽ không hoạt động GAE/J. Theo các tài liệu cho GAE/J, JDO phù hợp nhất với kho dữ liệu đó, mặc dù nếu mô hình bền vững là đơn giản và yêu cầu truy vấn cũng đơn giản thì JPA có thể được sử dụng như nhau. Với JDO hoặc JPA, người dùng sẽ cần phải sử dụng DataNucleus – DataNucleus

2

Sự khác biệt chính là JDO hỗ trợ mô hình miền phong phú (logic cùng với dữ liệu), tất cả các lớp liên tục đều có thể tham chiếu đến PersistenceManager hiện hành, truy vấn vấn đề và, Tôi đoán, có thể không có các trường liên tục theo mặc định.

JPA không hỗ trợ thiết kế phần mềm như vậy. Trong thực tế, mỗi thực thể không có một tham chiếu đến PersistenceManager, để có nó, bạn phải nghỉ mát để ThreadLocal biến, mà không phải là một giải pháp rất thanh lịch và mạnh mẽ.

2

Vì GAE BigTable không phải là RDBMS, JDO là lựa chọn tốt hơn. Có một số bài viết so sánh chi tiết trong Aphache JDO, nó rất hữu ích cho tôi.

1

JPA duy trì các đối tượng java cho dữ liệu quan hệ qua ORM, trong khi JDO là đặc tả chung chung hơn cho sự kiên trì đối tượng java. Vì vậy, việc sử dụng JDO sẽ cung cấp cho bạn nhiều quyền tự do hơn trong các tùy chọn triển khai bộ nhớ cho các đối tượng của bạn.

Các vấn đề liên quan