【Java/Spring Boot】
今回は、EntityManagerについて、ライフサイクルや主要な機能、トランザクション管理をシェアします。
EntityManagerとは?
EntityManager は、JPA(Java Persistence API)においてエンティティを管理する核心的なインターフェースです。
データベースと双方向に相互作用し、エンティティのライフサイクルの管理やクエリの実行を担当する役割を担っています。
主な役割と機能
① エンティティのライフサイクル管理
EntityManager は、エンティティを「永続性コンテキスト(Persistence Context)」に登録して管理します。エンティティの状態は大きく分けて以下の4つがあります。
- 非永続(New / Transient): 永続性コンテキストと関係のない状態
- 永続(Managed): 永続性コンテキストで管理されている状態
- 準永続(Detached): 永続性コンテキストから切り離された状態
- 削除(Removed): 削除予約された状態
② CRUD作業の提供
データベースへの保存、取得、修正、削除を行うためのメソッドを提供しています。
| メソッド | 説明 |
|---|---|
persist(Object entity) |
エンティティを永続性コンテキストに保存します。 |
find(Class<T> clazz, Object primaryKey) |
指定されたIDでエンティティを検索・取得します。 |
merge(Object entity) |
準永続状態のエンティティを再度永続状態にマージします。 |
remove(Object entity) |
エンティティを削除予約状態に変更します。 |
flush() |
永続性コンテキストの変更内容をデータベースに反映します。 |
clear() |
永続性コンテキストを初期化します。 |
③ JPQLの実行
JPQL(Java Persistence Query Language)を使用して、オブジェクト指向的なデータベースクエリを実行できます。
TypedQuery<Member> query = em.createQuery("SELECT m FROM Member m WHERE m.name = :name", Member.class);
query.setParameter("name", "John");
List<Member> members = query.getResultList();