Java ORM標準JPAプログラミング(1)


[参考講座]金英漢のJava ORM標準JPAプログラミング

✔JPA概要

  • Java Persistence API
  • Java陣営のORM技術標準
  • - ORM ?

  • オブジェクト-リレーションシップマッピング(オブジェクトリレーションシップマッピング)
  • オブジェクトオブジェクト別設計
  • リレーショナル・データベースリレーショナル・データベース別設計
  • ORMフレームワークは、中間から
  • をマッピングする.
  • 大衆言語の大部分のORM技術は
  • 存在する.

    -JPAのアプリケーションとJDBC間の動作



    -JPA動作


    (1)保存



    (2)クエリー



    -なぜJPAを使うの?

  • SQL中心の開発からオブジェクト中心の開発まで
  • 生産性
  • メンテナンス
  • パターン不一致解決
  • 性能
  • データアクセス抽象化と仕入先独立性
  • 標準
  • せいさんこうりつ


    JPAとCRUD
  • :jpaを保存します.persist(member)
  • クエリー:メンバー=jpa.find(memberId)
  • 修正
  • :member.setName(「変更する名前」)
  • :jpaを削除します.remove(member)
  • メンテナンス

  • 既存:フィールドを変更すると、すべてのSQLが
  • を変更します.
  • JPA:フィールドを追加するだけで、SQLはJPA処理
  • JPAの性能最適化機能


    1.メインキャッシュと一致することを確認
  • などのトランザクションで同じエンティティを返す-クエリのパフォーマンスをわずかに向上させる
  • .
  • DB IsolationレベルがRead Commitであっても、アプリケーションは
  • の繰り返し可能なReadを確保できます.
    String memberId = "100";
    Member m1 = jpa.find(Member.class, memberId); //SQL
    Member m2 = jpa.find(Member.class, memberId); //캐시
    println(m1 == m2) //true
    ->SQLは1回のみ実行
    2.書き込み遅延サポート取引
    (1) INSERT
  • トランザクションがコミットされるまでINSERT SQLを収集
  • JDBC BATCH SQL機能を使用して、
  • SQLを一度に送信
    transaction.begin(); // [트랜잭션] 시작
     
    em.persist(memberA);
    em.persist(memberB);
    em.persist(memberC);
    //여기까지 INSERT SQL을 데이터베이스에 보내지 않는다.
    //커밋하는 순간 데이터베이스에 INSERT SQL을 모아서 보낸다.
    transaction.commit(); // [트랜잭션] 커밋
    (2) UPDATE
  • UPDATEは、DELETEによる低(ROW)応答時間を最低
  • に下げる.
  • トランザクションのコミット時にUPDATE、DELETE SQLを実行し、直ちに
  • をコミット
    transaction.begin(); // [트랜잭션] 시작
     
    changeMember(memberA);
    deleteMember(memberB);
    비즈니스_로직_수행(); //비즈니스 로직 수행 동안 DB 로우 락이 걸리지 않는다.
    //커밋하는 순간 데이터베이스에 UPDATE, DELETE SQL을 보낸다.
    transaction.commit(); // [트랜잭션] 커밋
    3.遅延ロード
    遅延ロード
  • :オブジェクトの実際の使用時にロード
  • 即時ロード:JOIN SQLを使用して関連オブジェクト
  • に事前に問い合わせる.