1. ホーム
  2. jpa

[解決済み] JPAの@Entityアノテーションの正確な意味は何ですか?

2022-03-12 07:28:10

質問

SpringアプリケーションでJPAを勉強しているのですが、以下の点について疑問があります。 エンティティー アノテーションを使用しています。

というわけで、こんな感じのモデルクラスができました。

@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;

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

OK、私は エンティティ アノテーションはクラス・レベルにあり、このクラスのインスタンスであるオブジェクトのフィールドにマッピングすることを意味します。 T_CUSTOMER データベースのテーブルです。

しかし、なぜJPAでは エンティティ アノテーションを使用することはできません。 テーブル アノテーションは、モデルオブジェクトを特定のデータベーステーブルにマッピングするために使用されますか?It have some other meaningbehavior that actually I am missing?

何が足りないのでしょうか?の正確な意味は何ですか? エンティティ のアノテーションを使用してください。

どのように解決するのですか?

@Entity アノテーションは、クラスがテーブルにマッピングできることを定義します。そして、それは単なるマーカーであり、例えば、次のようなものです。 Serializable インタフェースになります。

そして、なぜ @Entity アノテーションは必須なのでしょうか?それはJPAがどのように設計されているかということです。新しいエンティティを作成するときは、少なくとも次の2つのことを行う必要があります。

  1. でアノテーションされた @Entity

  2. id フィールドを作成し、そのフィールドにアノテーションを付けます。 @Id

それ以外は任意です。例えば、テーブル名はエンティティクラス名から派生します(したがって @Table アノテーションは省略可能)、テーブルのカラムはエンティティの変数から派生したもの(そのため @Column アノテーションは省略可能)、などなど・・・。

JPAは、このAPIを学びたい、使いたいと思う開発者に迅速で簡単なスタートを提供しようとしています。そして、開発者が何かを機能させるためにできるだけ少ないものを設定するオプションを与えることは、このAPIがこの「使いやすく、学びやすい」目標を達成するための方法の1つなのです。そのため @Entity アノテーション( @Id アノテーション) は、エンティティを作成するために最低限しなければならないことです。