JPA-Entityマッピング


-javaorm標準jpaプログラミングを読み、まとめました.
代表者
マッピング
  • オブジェクトとテーブル:@Entity,@Table
  • プライマリ・キー・マッピング:@Id
  • フィールドとコラムマッピング:@Column
  • @Entity
    jpaを使用してdb内のテーブルをマッピングするクラスに@Entityを追加する必要があります.
    Entityを適用する際の注意点
  • デフォルトの作成者が必要です
    -デフォルトのジェネレータではなく、パラメータ付きジェネレータのみを定義する必要があります.
    jpaはデフォルトの作成者を使用してエンティティオブジェクトを作成するため、作成者が必要です.コンストラクション関数が定義されていない場合、javaはデフォルトのコンストラクション関数を自動的に作成しますが、1つ以上のコンストラクション関数を作成している場合は、自動コンストラクション関数は作成されません.したがって、デフォルトのコンストラクション関数も直接作成する必要があります.
  • finalクラス、enum、interface、innerクラスは使用できません
  • フィールドを保存するfinalは
  • を使用できません.
    ->上記の理由でentityクラスに@NorgsConstructorが追加されていることに気づきました.
    @Table
    エンティティにマッピングするテーブルを指定します.tableの名前が指定されていない場合は、テーブルの名前としてエンティティの名前が使用されます.
    ->データベースで大文字と小文字が区別されているかどうかを確認する必要がある場合があります.sqlまたはDBでは、通常、大文字と小文字は区別されませんが、jpqlとjavaでは大文字と小文字が区別されます.
    さまざまなマッピングの使用
  • @Enumrated
    フィールドとしてEnum値を使用する場合に貼り付けます.
  • @Lob
    dbのvarcharタイプには長さ制限があります.大きなフィールドでは、@LobでCLOB、BLOBタイプをマッピングできます.
  • -@Column
    2つ以上の単語の名前を使用する場合、データベースのコラムでは、ベースコードが慣例に従って使用されます.したがって、dbのコラム名を設定する場合は、nameに参照スコアを使用する名前を設定します.
    @Column(name="role_type")
    String roleType;
    dbアーキテクチャの自動作成(ddl)
    JPAは、エンティティークラスのマッピング情報からアーキテクチャを自動的に生成する機能をサポートします.application.propertiesのspring.jpa.hibernate.ddl-auto=createプロパティを追加すると、プロジェクトの実行時にテーブルが自動的に作成されます.
    ->ddl-auto-createは、テーブルの作成時にマッピング方法を学習するのに良い方法ですが、既存のテーブルは自動的に削除され、再生されるため、ビジネス/運用環境ではリスクの高い方法です.実際の作業ではvalidate/noneオプションに設定し、テーブルに変更がある場合は符号化で直接反映するのが信頼できる方法です.
    プライマリ・キーのマッピング
    JPAのプライマリ・キー・マッピング・ポリシー
  • 直接割当:直接割当ID
  • 自動生成:プロキシキーの使用
    -IDENTITY:DBへの鍵の割り当て
    -SEQUENCE:DBのシーケンス割当てキーの使用
    -TABLE:鍵生成テーブルを用いる鍵生成テーブルを作成し、シーケンス
  • を用いる.
    ちょくせつわりあて
    board.setId(0202);
    キー値を直接割り当てます.
    IDENTITY戦略
    Mysql、PostgreSQL、DB 2などは自動的にAUTO INCREMENTを使用してプライマリ・キーを生成します.データベースに値を格納すると、KEY値が順番に自動的に割り当てられます.
    ->IDENTITYポリシーは、キー値を知るためにデータベースにデータを挿入する必要があるため、データベースを2回問い合わせる必要があります.statement.getGeneratedKeys()を使用すると、dbを一度にクエリすることで最適化できます.
    *トランザクションの実現を容易にするために、クエリの書き込み遅延が遅延されます.ただし、entityを永続的にするにはentityのキー(識別子)が必要であるため、クエリーを遅らせることはできません.したがって、Identityポリシーでは書き込み遅延はサポートされていません.
    SEQENCEポリシー
    DBシーケンスは、一意の値を順次生成するDBオブジェクトであり、そのオブジェクトを用いて鍵を生成することができる.SEQUENCEポリシーは、データベース・シーケンスで識別子を問合せ、エンティティに割り当て、永続性コンテキストに格納します.その後、トランザクションがコミットされると、エンティティは実際のDBに保存されます.
    ->SEQUENCEポリシーDBシーケンスにエンティティを格納し、DBにエンティティを格納する場合
    DBと2回通話します.このような通信回数を減らすために、すべての位置サイズのシーケンスをメモリに格納し、その範囲内でメモリに割り当てます.デフォルトの割当てSizeは50で、51ウェイのデータを格納すると、書き込み不要なスペースを割り当てるためにシーケンスが100に増加する可能性がありますが、dbと2回通信するたびにinsertの時間が減少します.
    AUTO戦略
    データベースごとにプライマリ・キーを作成するポリシーが異なる場合があります.AUTOポリシーは、選択したデータベースの方言に基づいて、上のidentity、sequence、tableのいずれかのポリシーを自動的に選択します.