Sự khác biệt là giống nhau giữa Hibernate và JPA, thay vì JPA chỉ là một đặc điểm kỹ thuật, có nghĩa là không có triển khai thực hiện và Hibernate là một triển khai thực hiện.
Bạn có thể chú thích lớp học của mình bằng chú thích JPA, nhưng không có triển khai thì sẽ không có gì xảy ra.
Theo cách trừu tượng, bạn có thể xem xét "JPA" làm nguyên tắc.
Khi bạn sử dụng Hibernate với JPA, bạn đang thực sự sử dụng Hibernate bằng cách thực hiện JPA. Lợi ích là bạn có thể hoán đổi cài đặt JPA của Hibernate để thực hiện một đặc tả JPA khác (Eclipse Link, DataNucleuse, ..) nếu bạn sử dụng Hibernate trực tiếp, bạn không thể chuyển sang ORM khác.
Tôi hy vọng nó hữu ích.
JPA không phải là triển khai ORM mà chỉ là hướng dẫn triển khai Ánh xạ quan hệ đối tượng (ORM) và không có mã cơ bản để triển khai. nó sẽ không cung cấp bất kỳ chức năng cụ thể nào cho ứng dụng của bạn. Mục đích của nó là cung cấp một bộ quy tắc và hướng dẫn có thể được theo sau bởi các nhà cung cấp triển khai JPA để tạo ra một triển khai ORM theo cách được chuẩn hóa.
Hibernate là nhà cung cấp JPA. Khi có những thay đổi mới đối với đặc điểm kỹ thuật, hibernate sẽ phát hành việc thực hiện cập nhật của nó cho đặc tả JPA. Các nhà cung cấp JPA phổ biến khác là Eclipse Link (Thực hiện tham chiếu), OpenJPA, v.v.See Other provider here
@javax.persistence.Entity
là một kim chỉ nam cho một nhà cung cấp mà thực hiện JPA châm
@org.hibernate.annotations.Entity
là một thực hiện cho một Hibernate ORM
Hơn nữa bạn có thể see this other topic
Bài đăng SO này giải thích sự khác biệt giữa hai chú thích và lý do tại sao ánh xạ của bạn không được tìm thấy: http://stackoverflow.com/questions/955515/difference-between-jpa-entity-and-hibernate-entity –
và Hibernate Entity không được chấp nhận nên bạn không nên sử dụng nó FWIW; xem javadocs thay vì chỉ sử dụng –