Use @Noncacheable
to configure caching behavior for relationships. If used on a relationship, that relationship will not be cached, even though the parent Entity may be cached.
Annotation Elements
There are no elements for this annotation.
Usage
Each time EclipseLink retrieves the Entity, the relationship will be reloaded from the datasource. This may be useful for situations where caching of relationships is not desired or when using different EclipseLink cache types and having cached references extends the cache lifetime of related Entities using a different caching scheme. For instance Entity A references Entity B, Entity A is Full and Entity B is Weak. Without removing the caching of the relationsip the Entity B's cache effectively become Full.
Examples
Example 2-76 shows how to use @Noncacheable
to create a protected cache.
Example 2-76 Using @Noncacheable Annotation
@Entity @Cache( isolation=CacheIsolationType.PROTECTED ) public class Employee { @Id private long id; ... @OneToMany(mappedBy="manager") @Noncacheable private List<Employee> managedEmployees; ... }
Example 2-77 shows using the <noncacheable>
XML element in the eclipselink-orm.xml
file.
Example 2-77 Using <noncacheable> XML
<?xml version="1.0"?> <entity-mappings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eclipse.org/eclipselink/xsds/persistence/orm http://www.eclipse.org/eclipselink/xsds/eclipselink_orm_2_4.xsd" version="2.4"> <entity name="Employee" class="org.acme.Employee" access="FIELD"> <cache isolation="PROTECTED"/> <attributes> <id name= "id"/> <one-to-many name="managedEmployees" mapped-by="manager"> <noncacheable/> </one-to-many> </attributes> </entity> </entity-mappings
See Also
For more information, see:
"Caching"
http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Caching
"EclipseLink Caches" in Understanding EclipseLink
"Scaling EclipseLink Applications in Clusters" in Solutions Guide for EclispeLink