web-dev-qa-db-ja.com

JPA @Entityアノテーションの正確な意味は何ですか?

私はSpringアプリケーションでJPAを勉強していますが、@ Entityアノテーションに関連するいくつかの疑問があります。

そのため、次のようなモデルクラスがあります。

@Entity
@Table(name= “T_CUSTOMER”)
public class Customer {

    @Id
    @Column(name=“cust_id”)
    private Long id;

    @Column(name=“first_name”)
    private String firstName;

    @Transient
    private User currentUser;

    ...........................
    ...........................
    ...........................
}

わかりました、私は@ Entityアノテーションがクラスレベルにあり、このクラスのインスタンスであるオブジェクトのフィールドがT_CUSTOMERのフィールドにマップされることを意味することを知っていますデータベーステーブル。

しかし、JPAで@ Entityアノテーションを使用することが必須であり、@ Tableアノテーションのみを使用してモデルオブジェクトを特定のデータベーステーブルにマッピングできないのはなぜですか?私が実際に行方不明になっているという他の意味\動作がありますか?

私は何が欠けていますか? @ Entityアノテーションの正確な意味は何ですか?

23
AndreaNobili

@Entity注釈は、クラスをテーブルにマップできることを定義します。そしてそれは、例えばSerializableインターフェイスのような単なるマーカーです。

そして、なぜ@Entity注釈が必須なのですか? ...まあ、それはJPAの設計方法です。新しいエンティティを作成するときは、少なくとも2つのことを行う必要があります

  1. @Entityで注釈を付けました

  2. idフィールドを作成し、@Idで注釈を付けます

それ以外は任意です。たとえば、テーブル名はエンティティクラス名から派生し(したがって、@Tableアノテーションはオプションです)、テーブルの列はエンティティ変数から派生します(したがって、@Columnアノテーションはオプションです)。等々 ...

JPAは、このAPIの学習/使用を希望する開発者に迅速かつ簡単なスタートを提供しようとしています。目標を使用/学習します。したがって、@Entity注釈(@Id注釈と一緒に)は、エンティティを作成するために必要な最小限のものです。

40
ioko

JPAのエンティティは、データベースに永続化できるデータを表すPOJOに他なりません。エンティティは、データベースに保存されているテーブルを表します。エンティティのすべてのインスタンスは、テーブル内の行を表します。

エンティティの詳細: https://www.baeldung.com/jpa-entities

0
Diyan Georgiev