キーワード
JavaクラスとRDBのレコードをマッピングする。
マッピングは、アノテーションやXMLで行なう。
- EntityManager
RDBへのアクセスは、EntityManagerというクラスの提供するメソッドを介して行なう。
参照系)
find()、getReference()、createNamedQuery()、createNativeQuery()、createQuery()
更新系)
persist()、remove()
その他)
contains()、lock()、merge()、refresh()
永続コンテキストの操作)
clear()、close()、flush()、setFlushMode()
- JPQL(Java Persistence Query Language)
SQLによく似た文法で、オブジェクトを操作する為の言語。
関数や副問い合わせも用意されているが、TRIMやCONCATなどの列を操作する関数や、副問い合わせがWHERE句でしか使用できなかったり少し貧弱。
- エンティティ
永続化対象のオブジェクト
- 永続コンテキスト
エンティティを管理する領域
エンティティのライフサイクル
エンティティには、New、Managed、Detached、Removedという4つの状態があり、永続コンテキストへ関連付けられているManaged、Removedと関連付けられていないNew、Detachedに分類できる。
状態は、EntityManagerのメソッドの呼び出しなどで上記のように状態遷移する。
- New(新規)
コンストラクタにより生成されたプライマリ・キーを持たないエンティティを表わす。
- Managed(管理された)
永続コンテキストへ関連付けられているプライマリ・キーを持つエンティティを表わす。
- Detached(分離された)
永続コンテキストへ関連付けられていないプライマリ・キーを持つエンティティを表わす。
- Removed(削除された)
永続コンテキストへ関連付けられている、削除予定のエンティティを表わす。
永続コンテキストへ関連付けられているエンティティは、EntityManager.flush()の呼び出しや、トランザクションのコミットによりテーブルに反映される。