Spring-Boot JPA:宣言


JPA


紹介する


  • Java Persistence API
  • オブジェクト-リレーションシップマッピング、ORMフレームワーク
  • ビジネスロジックセット
  • 複数の実装:
  • 、Hibernate、EclipseLink、DataNucleusを含む
  • オブジェクトからDBテーブルへのマッピング
    アプリケーションオブジェクトを分析し、対応するsqlを生成し、JDBC APIを使用してデータベース
  • を使用する.

    JDBC APIとは?

  • Java DataBase Connectivity API
  • API
  • は、データベースのタイプを考慮することなく、データベースに関連するタスクを処理するのに役立ちます.

    長所

  • CRUD SQLを記述する必要はありません.
  • クエリー結果をオブジェクトにマッピングする操作も、自動処理されることが多い.
  • データ・ストレージ・レイヤで記述する必要があるコードは大幅に減少します.
  • 対象を中心に
  • SQLを開発し、生産性とメンテナンス能力を向上させる.
  • DBを変更する場合、コードを変更することなく簡単に変更できます.
  • JPAが解決した問題


    SQLを直接使用するときに発生する問題


    SQLによる
  • DBデータの管理
  • JDBC APIを使用して作成されたアプリケーション
    =>CRUD反復
  • ソリューション
  • :JPAを使用することで、開発者はSQLを直接作成する必要がなく、JPAが提供するAPIを使用するだけでよい.
  • パターンの相違

  • アプリケーションの開発に伴い、内部の複雑さは
  • 増加し続けている.
  • オブジェクト向けプログラミングは多種の設備を提供し、システムの複雑さを制御することができる.
    例えば、抽象化、カプセル化、情報隠蔽、継承、多形性等の
  • .
  • BUT、リレーショナル・データベースはデータ中心で、構造化->上のオブジェクト向けプログラミングには同じデバイスはありません.
  • 解決
  • :JPAは、開発者の代わりにオブジェクトとテーブルをマッピングすることによってパターンが一致しない.
  • Spring-boot JPA声明


    オブジェクト


    @Entity

  • JPAマッピング・テーブルを使用するクラスに@Entity宣言を付ける必要があります.
  • @Entityを持つクラスはJPAが管理する.
  • せいげんじょうけん

  • 基本ジェネレータは実装する必要があります.
  • finalクラス、enum、interfaceクラス、innerクラスは使用できません.
  • を保存するフィールドでfinalを使用しないでください.
  • ツールバーの

  • name:エンティティ名を指定します.デフォルトはクラス名
  • です.

    @Table

  • エンティティにマッピングするテーブルを指定します.
  • ツールバーの

  • name:マッピングするテーブルの名前を指定する
  • catalog:マッピングデータベースのcatalog
  • アーキテクチャ:DBアーキテクチャ
  • にマッピング
  • 一意制約:DDLクエリーの作成時に制約
  • を作成

    プライマリキー


    @Id


    プライマリ・キーの生成方法


    ダイレクトアサイメント
  • プライマリ・キー
    Id
  • のみ
  • 自動生成ポリシーの使用
    @GenerateValueと鍵生成ポリシー
  • の追加を選択

    鍵生成ポリシー

  • IDENTITY:プライマリ・キー生成をデータベースに委任します.
  • @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private String id; 
  • SEQUENCE:データベース・シーケンスを使用してプライマリ・キーを割り当てます.
  • TABLE:鍵を使用してテーブルを生成します.
  • AUTO:選択したデータベースに基づいて、上記の3つのポリシーのいずれかを自動的に選択します.
  • フィールド


    @Column

  • オブジェクトフィールドとDBテーブルコラムをマッピングします.
  • ツールバーの

  • name
    マップするテーブルのコラム名
  • を指定します.
  • insertable
  • true:エンティティストレージに宣言されたフィールド
  • を保存します.
  • false:データベースに格納されません.(読み取り専用)
  • updatable
  • true:エンティティの変更時に宣言されたフィールドも、
  • とともに変更されます.
  • false:データベースは変更されません.(読み取り専用)
  • table
    指定フィールドを他のテーブル
  • にマッピングする
  • nullable
    null
  • が許可されているかどうかを確認します.
  • unique
    拘束条件を保留する場合は
  • を使用します.
  • columnDefinition
    DB列情報を直接指定する場合は
  • を用いる.
  • length
    varcharの長さの調整(デフォルト255)
  • precision, scale
    BigInteger、BigDecimalタイプ使用
    各数字は小数位/小数位を含み、
  • を表す.