[Spring] JPA?


JPA?

  • Java Persistence API
  • API? : Application Programming Interface
  • cf)APIとプロトコルの違いは何ですか?
  • API:上下関係のある約束
  • プロトコル:上下関係なし.すべて同じです.
  • 対象データを永続的に記憶できるAPI
  • JavaとDBのデータ通信プロセス

  • データを生成するプログラムが終了しても消えないデータ!(RAMとは反対)
  • Java→DBセッションリクエスト
  • DB、オープンセッション
  • Java、接続付き
  • Java→DBクエリー転送
  • DB、クエリーに基づくデータ生成
  • DB→Javaデータ転送
  • 6号では、データベースのデータフォーマットがJava objectフォーマットと一致しないため、Javaで変換する必要があるが、煩雑な作業」CRUD
  • その後、JavaとDBのセッションを切断して接続を切断する操作を簡単にJava関数として表すとJPAです!
  • 1.JPAはORM技術です。


    ORM : Object Relational Mapping

  • 対象をデータベースに接続する方法論
  • 対象(Java、Kotlin、...)DBとのデータフォーマットの違いを克服!
  • Java→DB:Delete、Update、Insert=データ修正と挿入
  • DB→Java:Select=データサイクル
  • ただしJavaのデータ型はDBのデータ型とは異なり、直接接続できない
    ◇モデリングが必要
  • オブジェクトをDBテーブルに自動的に永続化する.
  • 2.JPAを使用してCRUDを実装できます。


    CRUD : Create(Insert) + Read(Select) + Update + Delete

  • データベース生成、読み出し、更新、消去機能.掲示板の主な機能と同じです.
  • JPAの基本機能.
  • 3.JPAには永続性コンテキストがあります。

  • 耐久性:Persistence、永続的にデータを格納する属性
  • context:当該対象を示す全ての情報
  • JavaとDBの間に存在!
  • DBは、Javaの要求に応答するために、永続コンテキスト(Javaデータが存在する)と同期する.
  • オブジェクト、持続性context、DB間の通信手順
  • 1 : 객체에는 data A가 있고 이것을 DB에 저장하고자 한다.
    
    2 : 영속성 context가 data A를 저장하고 DB에 그 데이터를 넘겨준다.
    
    3 : DB에서 data A를 저장한다.
    
    a : Java, Kotlin에서는 DB의 data B가 필요하다. 따라서 영속성 context에게 요청한다.
    
    b : 하지만 영속성 context에서는 data B가 없다.
    
    c : 그러므로 DB에게 data B를 요청한다.
    
    d : DB가 영속성 context에 data B를 동기화한다.
    
    e : 동기화된 data B를 객체에 넘겨준다.

    4.JPAはDBとOOPの不一致を解決する。

  • OOP:オブジェクト向けプログラミング
  • DBとOOPの不一致は?



    💡 データベース・テーブルがこのように構成されていると仮定します.
    BabtoテーブルにはTobeとBob Beの2種類があり、
    AnimalテーブルにはTobeとBobbeの動物がリストされています.
  • DBでは、各データ型は基本データ型(int,string)のみで構成され、AnimalテーブルのBTID項目はBabtoオブジェクトではなくIntとして宣言される.
  • fun main() {
        val tobae = Babto(1, "토베")
        val babbe = Babto(2, "밥베")
    
        val benny = Animal(1, "베니", tobae) //tobae 객체가 들어감
        val babal = Animal(2, "바발", babbe) //babbe 객체가 들어감
    }
    
    class Babto(val id : Int, var name : String)
    class Animal(val id: Int, var name: String, val BTid:Babto)
  • ただしJava、KotlinはOOPであるため、BT ID項目にBabtoオブジェクトを付与することができる.
  • では、誰がAnimalテーブルのBTID資料型の不一致を解決しますか?
    →これはJPAで解決!