Java ORM標準JPAプログラミング-基本編(1)
SQLを中心とした開発の問題点
SQL:リレーショナル・データベース管理システム(RDBMS)のデータを管理するために設計された特殊な目的のプログラミング言語.
多くのデータベース関連プログラムはSQLを標準として使用しています.
アプリケーションは主にオブジェクト向け言語(JAVA)を使用します.
データベースはリレーショナル・データベースを使用します.
この2つの構造と動作方式は異なる.すなわち,パターンの相違が生じた.
したがって、オブジェクトをSQLに変換してDBに格納することは、開発者によって実行されます.
この場合、各オブジェクトをSQLに変換してCRUDに適応するには、冗長な繰り返しが必要であり、変更や拡張時にも大量のコードを変更する必要があるという問題があります.
つまり、SQLに頼って開発する必要があります.
オブジェクトとリレーショナル・データベースの違い
1.継承
(출처: 인프런 김영한 자바ORM 표준 JPA-기본편 수업자료)
したがって、オブジェクトを格納およびクエリーする過程で、さまざまな複雑な問題が発生します.
オブジェクト使用リファレンスキー:Member.getTeam();
表はスラッシュ:JOIN ON M.TEAM ID=T.TEAM I
DBからメンバーをインポートする場合、オブジェクト言語への参照値Teamもメンバーです.getTeamでインポートできる必要があります.
実際に、チームを単独でインポートしないと、チームに関する情報は照会できません.また、導入時にもチームとメンバーの関係を再設定します.
同じ脈絡では、オブジェクトがオブジェクトのグラフィックを自由に閲覧できる必要がありますが、これは不可能になります.
たとえば、メンバーを使用してOrderItemを検索します.
Member.getOrder().このようにgetOrderItem()を参照できます.
このようなオブジェクト指向とRDB間の相違による不便を解決するために,オブジェクトをDBに格納するようにJavaセットに格納する方法を検討してきたが,結果はJPAであった.
JPA
-オブジェクトをオブジェクトとして設計し、RDBをRDBとして設計し、ORMフレームワークを中間から
-大衆言語にはORM技術が存在することが多い.
->実施者:HyperNate、EclipseLink、DataNucleus
なぜJPAを使うのですか?
SQL中心の開発からオブジェクト中心の開発まで
せいさんこうりつ
既存のSQLに比べて、CRUDは比類のない便利さを提供しています.
•保存:jpa.persist(member)
•クエリー:メンバーメンバー=jpa.find(memberId)
•修正:メンバー.setName(「変更する名前」)
•削除:jpa.remove(member)
->保守が容易
解決
差異の継承、関連付け、グラフィックナビゲーションの問題の解決
既存JPAと対象比較結果エラー
String memberId = "100";
Member member1 = memberDAO.getMember(memberId);
Member member1 = memberDAO.getMember(memberId);
//기존 코드, sql로 member를 가져오는 코드라고 가정
member1 !=member2 // 둘은 다르다
String memberId = "100";
Member member1 = jpa.find(Member.class, memberId);
Member member2 = jpa.find(Member.class, memberId);
member1 == member2; //같다.
-INSERT SQLを収集し、トランザクションがコミットされるまで一度に送信し、効率を最大化します.
•遅延ロード:オブジェクトの実際の使用時にロード
•インスタントロード:JOIN SQLを使用してすべての関連オブジェクトを一度に表示
両者にはそれぞれ長所と短所がある.
Reference
この問題について(Java ORM標準JPAプログラミング-基本編(1)), 我々は、より多くの情報をここで見つけました https://velog.io/@bins1225/자바-ORM-표준-JPA-프로그래밍-기본편1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol