JPAとは?



JPAは,Javaにおけるオブジェクト−リレーショナルマッピング技術の標準として用いられるインタフェースの集合である.
このフレームワークは、実際に実装されたインタフェースフィーチャーではなく、実装されたクラス(データベースに関連付けられた)をマッピングするために使用されます.

ORMとは?


簡単に言えば、ORMは、リレーショナル・データベース(RDB)で使用されるテーブルと、オブジェクト概念を実装するクラスとを自動的に関連付け(マッピング)することを意味する.
しかし、クラスとテーブルは一致しません.最初から互換性を見て作成したわけではありません.
したがって、ORMは、オブジェクト間の関係に基づいてSQL文を自動的に生成し、不一致の問題を解決します.ORMを使用すると、SQL文を書く必要はありません.

ORMの長所と短所


1.メリット


オブジェクト向けの完全なコード


ORMを使用すると、SQL文以外のクライアント・メソッドを使用してデータベースを操作できます.これにより、オブジェクト・モデルのみを使用したプログラミングに集中できます.
つまり、SQL文、宣言、割り当て、終了などのサブコードを削除または削減することで、コードの読み取りを向上させることができます.

再利用、メンテナンス、美化が容易


ORMは既存のオブジェクトとは独立して作成され、オブジェクトとして作成されるので回収できます!
また,マッピングされた情報は非常に明確であるため,ERDの表示依存性を低減できる.
  • ここのERDは?

  • システム内のエンティティ(テーブル)の関係を表すグラフ!

    データベース管理システムの依存性の低下


    オブジェクト間の関係によってSQL文が自動的に生成され、オブジェクトのデータ型を使用することもでき、RDBMSのデータ構造とオブジェクト向けモデルとの距離を短縮することができます.これは、オブジェクトに集中することで、DBMSの交換にかかる時間とリスクを軽減できることを意味します.
  • ここのDBMSは?

    データベース内のデータにアクセスできるソフトウェアツールは、上記の図(mysqlworkbranch)!
  • 2.短所


    ORMは万能じゃない!


    ORMの使用は便利ですが、慎重に設計する必要があります.プロジェクトの複雑さが高いほど難易度が高くなり、設計不足で実施が不適切であれば、速度の低下と一貫性の問題を引き起こす可能性があります.また、一般的な大規模なSQL文の中には、最終的にはSQL文を記述する必要があるものもあります.速度を速めるには、個別の調整が必要です.
    短いSQL調整とは?
    SQL文を最適化して、必要な結果値を最短時間で取得します.

    JPAとRDBモードが一致しないという問題を解決する



    パターンが一致しないのは何ですか?
    この2枚の図を比較すると、Javaは関係を継承として表します.これに対し、RDBは継承されていない.
    これは、JavaでRDBを使用する場合、この継承関係を関係表現に変換するためにコードを記述する必要があることを意味します.これは、開発者がモードの不一致を解決するために費やしたコストです.
    これは、JPAが内部計算に取って代わり、開発者がモデルの不一致にかかるコストを削減することを意味します.

    なぜJPAを使うのですか?


    以上のように、SQLを中心とした開発では、フィールドをオブジェクトに追加する場合は、それに関連するすべてのCRUD SQLを変更する必要があります.
    したがって,以下のコードに示すように,モデリングが進むにつれてマッピングの作業量も増加するため,生産性が非常に低下する.
  • フィールド追加前コード
  • // 필드 추가 전 Person 클래스
    public class Person {
       private String personId;
       private String name;
    }
    
    // SQL
    INSERT INTO PERSON(PERSON_ID, NAME) VALUES (?, ?)
    SELECT PERSON_ID, NAME FROM PERSON WHERE PERSON_ID = ? 
    UPDATE PERSON SET .....
  • フィールドを追加すると、コード
  • public class Person {
       private String personId;
       private String name;
       private String age;
       private String tel;
    }
    
    // SQL을 추가된 필드만큼 모두 수정이 일어난다.
    INSERT INTO PERSON(PERSON_ID, NAME, AGE, TEL) VALUES (?, ?, ?, ?)
    SELECT PERSON_ID, NAME, AGE, TEL FROM PERSON WHERE PERSON_ID = ? 
    UPDATE PERSON SET .....
    JPAはSQLを中心とした開発においてオブジェクト中心の開発を可能にし,多くのメリットをもたらした.

    n/a.結論

  • JPAは、JavaオブジェクトとRDBMSとの間でマッピングすることができる.
  • JPAは、上記の利点により、SQLを中心とした開発において対象を中心とした開発が可能となる.