5.12. JPA キャッシュストア


この実装は、エンティティーメタモデルにアクセスする JPA 2.0 仕様によって異なります。

通常のユースケースでは、JPA 秒レベルキャッシュやクエリーキャッシュに Red Hat Data Grid を利用することが推奨されます。ただし、Red Hat Data Grid API のみを使用し、一般的な形式(明確に定義されたスキーマを持つデータベースなど)を使用して Red Hat Data Grid をキャッシュストアに永続化したい場合は、JPA Cache Store が適切になる可能性があります。

留意すべき点

  • JPA キャッシュストアを使用する場合、キーはエンティティーの ID で、値はエンティティーオブジェクトである必要があります。
  • @Id または @EmbeddedId アノテーションがついたプロパティーのみが許可されます。
  • 自動生成される ID はサポートされません。
  • 最後に、すべてのエントリーは immortal エントリーとして保存されます。

5.12.1. 使用例

たとえば、永続ユニット "myPersistenceUnit" と JPA エンティティー User があるとします。

persistence.xml

<persistence-unit name="myPersistenceUnit">
	...
</persistence-unit>
Copy to Clipboard Toggle word wrap

ユーザーエンティティークラス

User.java

@Entity
public class User implements Serializable {
	@Id
	private String username;
	private String firstName;
	private String lastName;

	...
}
Copy to Clipboard Toggle word wrap

キャッシュ「usersCache」を設定して JPA キャッシュストアを使用するように設定できます。これにより、データをキャッシュに配置すると、JPA 設定を基にデータがデータベースに永続化されます。

EmbeddedCacheManager cacheManager = ...;


Configuration cacheConfig = new ConfigurationBuilder().persistence()
            .addStore(JpaStoreConfigurationBuilder.class)
            .persistenceUnitName("org.infinispan.loaders.jpa.configurationTest")
            .entityClass(User.class)
            .build();
cacheManager.defineCache("usersCache", cacheConfig);

Cache<String, User> usersCache = cacheManager.getCache("usersCache");
usersCache.put("raytsang", new User(...));
Copy to Clipboard Toggle word wrap

通常、単一の Red Hat Data Grid キャッシュは複数のタイプのキーと値のペアを保存できます。以下に例を示します。

Cache<String, User> usersCache = cacheManager.getCache("myCache");
usersCache.put("raytsang", new User());
Cache<Integer, Teacher> teachersCache = cacheManager.getCache("myCache");
teachersCache.put(1, new Teacher());
Copy to Clipboard Toggle word wrap

キャッシュが JPA キャッシュストアを使用するように設定されている場合、キャッシュは ONE タイプのデータのみを保存できることに注意してください。

Cache<String, User> usersCache = cacheManager.getCache("myJPACache"); // configured for User entity class
usersCache.put("raytsang", new User());
Cache<Integer, Teacher> teachersCache = cacheManager.getCache("myJPACache"); // cannot do this when this cache is configured to use a JPA cache store
teachersCache.put(1, new Teacher());
Copy to Clipboard Toggle word wrap

複合キーを使用できるように @EmbeddedId の使用がサポートされています。

@Entity
public class Vehicle implements Serializable {
	@EmbeddedId
	private VehicleId id;
	private String color;	...
}

@Embeddable
public class VehicleId implements Serializable
{
	private String state;
	private String licensePlate;
	...
}
Copy to Clipboard Toggle word wrap

最後に、自動生成される ID (例: @GeneratedValue)はサポートされていません。JPA キャッシュストアを使用してキャッシュに何かを配置する場合、キーは ID の値である必要があります。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る