2009-12-10 3 views
12

Tôi đã sử dụng Hibernate ORM, đây là việc triển khai đặc tả JPA để quản lý dữ liệu quan hệ. Tôi cũng đã nghe nói về các đặc điểm kỹ thuật JDO mà phải làm như vậy (quản lý dữ liệu quan hệ).Whats sự khác biệt giữa các đặc tả JPA và JDO?

Sự khác nhau cơ bản giữa hai yếu tố này là gì? Bất kỳ mẫu mã nào được đánh giá cao nhất. Làm thế nào để JDO tích hợp với các ngăn xếp công nghệ Java khác, ví dụ: EJB3?

+0

liên quan: http://stackoverflow.com/questions/530215/hibernate-vs-jpa-vs-jdo-pros-and-cons-of-each –

+0

@matt - từ bạn câu hỏi tôi không thấy bất kỳ câu trả lời nào cung cấp cho sự khác biệt. Bạn hỏi về những ưu và khuyết điểm, tôi sẽ đánh giá những người sau khi hiểu sự khác biệt giữa hai đặc điểm kỹ thuật. – n002213f

Trả lời

11

Hãy thử những JDO-JPA FAQ, JDO or JPA, JDO .v. JPA, JDO .v. JPA - API, JDO .v. JPA - ORM

JDO tồn tại rất lâu trước khi JPA, và có một phạm vi rộng hơn. JPA chỉ dành riêng cho RDBMS và (ngay cả trong JPA2) không cung cấp sự hỗ trợ đầy đủ mà JDO cung cấp. Các liên kết, và các bài viết khác trong diễn đàn này nên cung cấp nhiều đọc để giải thích tất cả các bên của các đối số.

--Andy (DataNucleus)

+0

bất kỳ gợi ý nào về cách người ta sẽ tích hợp JDO với các ngăn xếp khác, ví dụ: EJB3 – n002213f

+0

Triển khai JDO (ví dụ: DataNucleus) đi kèm với bộ điều hợp JCA, do đó, câu trả lời tuyệt vời của nó là – DataNucleus

+0

Câu trả lời hay, nhưng, FYI, hai liên kết đầu tiên đã chết. –

2

JPA đã được xác định để thống nhất và thay thế các thông số kỹ thuật Java bền bỉ tồn tại trước đó của EJB CMP và JDO. JPA được phát hành như một phần của EJB 3.0 và là một phần của đặc tả Java EE được hỗ trợ bởi Oracle WebLogic, IBM Websphere, Redhat JBoss và bất kỳ nhà cung cấp Java EE nào khác.

Có nhiều sản phẩm hàng đầu hỗ trợ JPA (TopLink/EclipseLink, Hibernate, OpenJPA, DataNucleus), nhưng ít hoặc không hỗ trợ JDO hoặc CMP. Vì vậy, có vẻ như JPA đã làm tốt công việc thay thế cả hai. Đối với JPA chỉ là RDBMS, đó là hoàn toàn sai, (ngay cả DataNucleus là sản phẩm JDO duy nhất còn lại mà tôi biết, hỗ trợ JPA trên bất kỳ nền tảng không quan hệ nào mà nó hỗ trợ JDO). Ngoài ra còn có nhiều sản phẩm khác hỗ trợ JPA trên các nền tảng không quan hệ, chẳng hạn như hỗ trợ NoSQL và EIS của EclipseLink (MongoDB, Oracle NoSQL, XML, cơ sở dữ liệu kế thừa), Kundera, DataNucleus, thậm chí các cơ sở dữ liệu đối tượng như ObjectDB hỗ trợ JPA là API Java của họ.

+2

GAE có vẻ là một nền tảng hỗ trợ JDO chính. Tôi không biết làm thế nào khác biệt đó là DataNucleus nhưng tôi đã nhìn thấy các câu hỏi ở đây ... –

+1

Có bao nhiêu đại diện của các nhà cung cấp kho dữ liệu không RDBMS có trong nhóm chuyên gia JPA? Đây sẽ là đại diện cho mức độ phù hợp của nó được "thiết kế" cho kho dữ liệu không phải của RDBMS. – user383680

+1

Các kho dữ liệu khác không sử dụng JDBC, nhưng JPA được định hướng xung quanh nó, không có cách nào thực sự cung cấp quyền truy cập vào kho dữ liệu bằng các phương tiện JPA tiêu chuẩn; DataNucleus dường như hack nó thông qua jdbc.url. Do đó không, tôi không thấy cách "JPA" phục vụ cho các kho dữ liệu khác như bạn yêu cầu. Liệu DataNucleus có nên cung cấp JPA trên chúng cũng có thể gây tranh cãi hay không. –