私は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アノテーションの正確な意味は何ですか?
@Entity
注釈は、クラスをテーブルにマップできることを定義します。そしてそれは、例えばSerializable
インターフェイスのような単なるマーカーです。
そして、なぜ@Entity
注釈が必須なのですか? ...まあ、それはJPAの設計方法です。新しいエンティティを作成するときは、少なくとも2つのことを行う必要があります
@Entity
で注釈を付けました
idフィールドを作成し、@Id
で注釈を付けます
それ以外は任意です。たとえば、テーブル名はエンティティクラス名から派生し(したがって、@Table
アノテーションはオプションです)、テーブルの列はエンティティ変数から派生します(したがって、@Column
アノテーションはオプションです)。等々 ...
JPAは、このAPIの学習/使用を希望する開発者に迅速かつ簡単なスタートを提供しようとしています。目標を使用/学習します。したがって、@Entity
注釈(@Id
注釈と一緒に)は、エンティティを作成するために必要な最小限のものです。
JPAのエンティティは、データベースに永続化できるデータを表すPOJOに他なりません。エンティティは、データベースに保存されているテーブルを表します。エンティティのすべてのインスタンスは、テーブル内の行を表します。
エンティティの詳細: https://www.baeldung.com/jpa-entities