多くの記事(たとえばhere)を読んでいるので、与えられたエンティティに対してHibernateの第2レベルのキャッシュを有効にするには、@org.hibernate.annotations.Cache
アノテーションを介してエンティティに対してキャッシュ同時実行戦略を設定する必要があります。私も、このエンティティを取得し、いくつかのクエリに(query.setCacheable(true)
使用して)、クエリ・レベルのキャッシュを使用し、それがうまく機能のほかにデータ転送オブジェクト(DTO)投影用のHibernate第2レベルキャッシュ
@Entity
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Person {
。私はPersonDto
にも@Cache
注釈を設定する必要がありますか
Query query = session.createQuery("SELECT new PersonDto(person.id, person.name) FROM Person person WHERE person.name = :name");
query.setParameter("name", name);
query.setCacheable(true);
query.uniqueResult();
:
私の質問は、このようなクエリのためになるよう、DTO投影を使用してカスタムクエリに関連しますか?注釈なしでクエリを実行しようとしましたが、DTOが正常にキャッシュされました。
エンティティオブジェクトのみのアノテーションが必要な理由と、エンティティオブジェクト以外の他のオブジェクトがその必要がない理由を説明できますか?
ありがとうございました。
あなたの説明のおかげで、それは私のためのセンスを作る:) – Suchac