This annotation should always be used in preference to the less
useful JPA-defined annotation jakarta.,
since JPA provides no means to specify anything about the semantics
of the cache. Alternatively, it's legal, but redundant, for the two
annotations to be used together.
Note that entity subclasses of a root entity with a second-level cache inherit the cache belonging to the root entity.
For example, the following entity is eligible for caching:
@Entity
@Cache(usage = NONSTRICT_READ_WRITE)
public static class Person { ... }
Similarly, this collection is cached:
@OneToMany(mappedBy = "person") @Cache(usage = NONSTRICT_READ_WRITE) private List<Phone> phones = new ArrayList<>();
Note that the second-level cache is disabled unless hibernate.cache.region.factory_class is explicitly specified, and so, by default, this annotation has no effect.
jakarta.persistence.Cacheable , org.hibernate.Cache , org.hibernate.cfg.AvailableSettings#CACHE_REGION_FACTORY , org.hibernate.cfg.AvailableSettings#USE_SECOND_LEVEL_CACHE
| Modifier and Type | Method and Description |
|---|---|
| public String | include()
Deprecated
Use
When bytecode enhancement is used, and field-level lazy fetching is enabled, specifies which attributes
of the entity are included in the second-level cache, either:
includeLazy() for the sake of typesafety.
|
| public boolean | includeLazy()
When bytecode enhancement is used, and field-level lazy fetching is enabled, specifies whether lazy attributes of the entity are eligible for inclusion in the second-level cache, in the case where they happen to be loaded. |
| public String | |
| public CacheConcurrencyStrategy |
| include | back to summary |
|---|---|
| public String include()
Deprecated Use When bytecode enhancement is used, and field-level lazy fetching is enabled, specifies which attributes of the entity are included in the second-level cache, either:
| |
| includeLazy | back to summary |
|---|---|
| public boolean includeLazy() When bytecode enhancement is used, and field-level lazy fetching is enabled, specifies whether lazy attributes of the entity are eligible for inclusion in the second-level cache, in the case where they happen to be loaded.
By default, a loaded lazy field will be cached when
second-level caching is enabled. If this is not desirable—if,
for example, the field value is extremely large and only rarely
accessed—then setting
| |
| region | back to summary |
|---|---|
| public String region() The cache region name. | |
| usage | back to summary |
|---|---|
| public CacheConcurrencyStrategy usage() The appropriate concurrency policy for the annotated root entity or collection. | |