http://opensource.atlassian.com/projects/hibernate/browse/HHH-2879 ???
-
Steve Ebersole
Project Lead
http://hibernate.org
steve(a)hibernate.org
Principal Software Engineer
JBoss, a division of Red Hat
http://jboss.com
http://redhat.com
steve.ebersole(a)jboss.com
steve.ebersole(a)redhat.com
On Tue, 2008-09-16 at 10:03 -0700, Elias Ross wrote:
I've been looking to optimize the caching of an application which
uses
a mutable natural key, an account phone number.
Hibernate does not yet support optimized caching of
@NaturalId(mutable=false), because of how the current natural ID
relies on immutable IDs. The caching associates a QueryKey -> results
and it's impossible to evict the QueryKey since the natural keys are
embedded in it.
One solution I considered was to create an association between a set
of natural ID values and "QueryKey". When a query is made with mutable
natural keys, an association would be made. This could be done within
"StandardQueryCache." And then when an entity is updated or removed,
if there are mutable natural keys, Hibernate could locate the query
and remove it as well. I'm not sure how I could implement this part.
I'm guessing I'd have to add a method to QueryCache to do the removal.
public interface QueryCache {
...
public void remove(NaturalIdAssocation nia) throws HibernateException;
}
public class NaturalIdAssociation implements Serializeable {
Type type;
Set<Object> keys;
}
Actually, thinking this over, having this removal operation would fix
some other issues when non-mutable natural id entities are removed.
For instance, HHH-3478, a problem found using EntityManager and
natural IDs.
Thoughts?
_______________________________________________
hibernate-dev mailing list
hibernate-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev