JPAとは

Java Persistent APIの略。

Javaのオブジェクト世界とDBの世界を直接的につなげて、両間で自動変換を行う仕組み。
標準O/Rマッピングフレームワーク




特徴

  • JavaオブジェクトとDB・テーブルとの間の変換指定(マッピング指定)をアノテーションだけでできる。

  • Javaオブジェクトをそのまま読み書き・削除・検索できる。




要素

  • エンティティマネジャー(EntiytManager)
    エンティティを管理する。中心となる要素。

  • エンティティ
    DBのデータをクラスとして扱えるようにするためのアノテーション

  • 永続性コンテキスト
    EntiytManagerの配下にあり、エンティティの状態を表す。


EntiytManagerがエンティティを受け取り、様々なDB処理を一括して行う。




EntiytManagerで用意されてる基本的なメソッド

  • persist(新規登録)
  • merge(更新)
  • remove(削除)
  • find(検索)




永続性コンテキストとは

インスタンスは、プログラムが終了すると、同時にすべて消滅する。 なぜ?→laravelわからなかったところまとめメモ - プログラミングMEMO
例えば、文書作成プログラムがあり、入力した文書(インスタンス)が、プログラム終了と同時に消滅してしまう。

そこで、インスタンスの状態を半永久的に保存し、いつでも復元できるようにすることが必要となる。このことを永続化という。
生成したインスタンスの保存 = 永続化


EntiytManagerのメソッドで操作したエンティティは一旦、永続性コンテキストに配置される。
例えば、エンティティに対して新規登録の操作をしても、その時点ではDBへ書き込みはされず、「このエンティティはDBに新規登録するデータだよ」というマークをつけて永続性コンテキストに配置はれるだけ。
これが、オブジェクトの永続化になる。
EntiytManagerによって、DBへの格納が可能になった状態であることを意味する。




O/Rマッピング(O/Rマッパー)

オブジェクト(Object)のそれぞれのデータを、リレーショナルデータベース(RelationalDatabase)のレコードを構成する個々の項目に関連付ける仕組みのこと。