永続ユニットは、以下が含まれる論理グループです。
エンティティーマネージャーファクトリーおよびそのエンティティーマネージャーの設定情 報。
エンティティーマネージャーによって管理されるクラス。
データベースへのクラスのマッピングを指定するメタデータのマッピング。
persistence.xml ファイルには、データソース名を含む永続ユニット設定が含まれています。
/META-<property name="jboss.entity.manager.jndi.name" value="java:/MyEntityManager"/>
<property name="jboss.entity.manager.factory.jndi.name" value="java:/MyEntityManagerFactory"/>
public User createUser(User user) { entityManager.persist(user);
return user;
}
public void updateUser(User user) { entityManager.merge(user);
}
public void deleteUser(String user) { User user = findUser(username);
if (user != null)
entityManager.remove(user);
}
public User findUser(String username) {
CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<User> criteria = builder.createQuery(User.class);
Root<User> root = criteria.from(User.class);
TypedQuery<User> query = entityManager .createQuery(criteria.select(root).where(
builder.equal(root.<String> get("username"), username)));
try {
return query.getSingleResult();
}
catch (NoResultException e) { return null;
} }
persistence.xml ファイルには、データソース名を含む永続ユニット設定が含まれています。 /META-INF/ ディレクトリーに persistence.xml ファイルが含まれる JAR ファイルまたはディレクトリーは、
永続ユニットのルートと呼ばれます。
Jakarta EE 環境では、永続ユニットのルートは以下の 1 つである必要があります。
EJB-JAR ファイル
WAR ファイルの /WEB-INF/classes/ ディレクトリー
WAR ファイルの /WEB-INF/lib/ ディレクトリーにある JAR ファイル EAR ライブラリーディレクトリーの JAR ファイル
アプリケーションクライアントの JAR ファイル
例
例
:永続設定ファイル 永続設定ファイル
12.8. 2 次キャッシュ
12.8.1. 2 次キャッシュ
2 次キャッシュとは、アプリケーションセッション外部で永続化された情報を保持するローカルデータ ストアのことです。このキャッシュは永続プロバイダーにより管理され、アプリケーションとデータを 分離することでランタイムを改善します。
JBoss EAP では、以下の目的のためにキャッシュがサポートされます。
Web セッションのクラスタリング
ステートフルセッション Bean のクラスタリング SSO クラスタリング
Hibernate 2 次キャッシュ
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_2.xsd"
version="2.2">
<persistence-unit name="example" transaction-type="JTA">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
<mapping-file>ormap.xml</mapping-file>
<jar-file>TestApp.jar</jar-file>
<class>org.test.Test</class>
<shared-cache-mode>NONE</shared-cache-mode>
<validation-mode>CALLBACK</validation-mode>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
</properties>
</persistence-unit>
</persistence>
Jakarta Persistence の 2 次キャッシュ
警告 警告
各キャッシュコンテナーは repl および dist キャッシュを定義します。これらの キャッシュは、ユーザーアプリケーションで直接使用しないでください。
12.8.1.1.
デフォルトの デフォルトの
2次キャッシュプロバイダー 次キャッシュプロバイダー
Infinispan は、JBoss EAP のデフォルトの 2 次キャッシュプロバイダーです。Infinispan は、オプショ ンのスキーマを持つ分散型のインメモリーキーと値のデータストアで、Apache License 2.0 で利用でき ます。
12.8.1.1.1. 永続ユニットでの永続ユニットでの 2 次レベルキャッシュの設定次レベルキャッシュの設定
永続ユニットの shared-cache-mode 要素を使用して 2 次レベルキャッシュを設定できます。
1. 「単純な Jakarta Persistence アプリケーションの作成」を参照して、Red Hat CodeReady Studio で persistence.xml ファイルを作成します。
2. 以下の内容を persistence.xml ファイルに追加します。
SHARED_CACHE_MODE 要素には以下の値を指定できます。
ALL: すべてのエンティティーがキャッシュ可能と見なされます。
NONE: キャッシュ可能と見なされるエンティティーはありません。
ENABLE_SELECTIVE: キャッシュ可能とマークされたエンティティーのみがキャッシュ可
能と見なされます。
DISABLE_SELECTIVE: 明示的にキャッシュ不可能であるとマークされたエンティティー
を除くすべてのエンティティーがキャッシュ可能と見なされます。
UNSPECIFIED: 動作は定義されません。プロバイダー固有のデフォルトは提供されます。
<persistence-unit name="...">
(...) <!-- other configuration -->
<shared-cache-mode>SHARED_CACHE_MODE</shared-cache-mode>
<properties>
<property name="hibernate.cache.use_second_level_cache" value="true" />
<property name="hibernate.cache.use_query_cache" value="true" />
</properties>
</persistence-unit>