8

私はSpringの世界ではまったく新しく、HibernateとSpringフレームワークを統合する方法を研究しています

Hibernate アノテーションと JPA アノテーションの関係について疑問があります。

次のエンティティクラスのようなものがある場合:

package org.andrea.myexample.HibernateOnSpring.entity;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;


/* Classe che rappresenta un oggetto da persistere sul database
 * 
 */
@Entity
@Table(name="person")
public class Person {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private int pid;

    private String firstname;

    private String lastname;

    public int getPid() {
        return pid;
    }

    public void setPid(int pid) {
        this.pid = pid;
    }

    public String getFirstname() {
        return firstname;
    }

    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }

    public String getLastname() {
        return lastname;
    }

    public void setLastname(String lastname) {
        this.lastname = lastname;
    }
}

私が理解していないのは、Hibernate アノテーションと JPA アノテーションの関係です。

前の例で使用しているアノテーション@Entity@Table(name="person")@GeneratedValue(strategy=GenerationType.AUTO)およびidは、単純な JPA アノテーションですか、それとも Hibernate の特定のアノテーションですか?

JPA アノテーションを使用してデータをデータベースに保持している場合、何が Hibernate を与えているのでしょうか?

TNX

アンドレア

4

3 に答える 3

25

答えはまちまちです。

他の人が指摘しているように、JPA は Hibernate が実装を提供する仕様です。JPA アノテーション/API を使用し、クラスパスに Hibernate jar を含めることで、Hibernate が実際のロジックを提供します。

さらに、Hibernate は JPA とは無関係の API を提供します。それも使用できます。主な違いは次のとおりです。

  • JPA API を使用する場合は、後で Hibernate を他の JPA 実装 (vg EclipseLink) に置き換えることができ、プログラムを変更する必要はありません。

  • Hibernate API を直接使用する場合、実装に代わるものはありません。利点は、Hibernate が定義しているが、JPA 標準の一部ではない機能を使用できることです。

いずれにせよ、完全に避けるべきことは、JPA と Hibernate API を混在させることです。初心者として、JPA に固執することをお勧めします。

JPAを使用していることを確認するには、からのクラス/注釈のみを含めてくださいjava.persistence。from は何も含めないでくださいorg.hibernate(または、単に Hibernate を使用したい場合は、その逆を行います)。

于 2013-02-23T12:45:57.117 に答える
8

HibernateはJPA仕様の実装です。JPAは単なる仕様であり、アノテーションとインターフェースのセットです。それを使用するにはJPAの実装が必要であり、Hibernateはその1つです。JDBCを使用するのと同じように、データベースドライバーが必要です。

アノテーションのパッケージはjavax.persistence、なので、JPAアノテーションです。Hibernateアノテーションはパッケージに含まれていますorg.hibernate.xxx

于 2013-02-23T12:38:32.467 に答える