And that is not what I see, cacheable statement gets
executed only once and for second query there are no
trips to database, none.
My code
public void test(Session s) throws Exception {
s = currentSession();
queryCacheableObject(s);
closeSession();
s = currentSession();
queryCacheableObject(s);
}
private void queryCacheableObject(Session s) {
Query query = s.createQuery("from TestObj t
where t.name like 'a%'");
query.setCacheable( true );
List objects = query.list();
print( objects);
}
public static void main(String[] args) {
Test945854 t = new Test945854();
t.executeTests();
}
mapping:
<class
name="TestObj"
table="test_obj"
dynamic-update="true"
>
<cache usage="read-write" />
<id
name="id"
type="java.lang.Integer"
unsaved-value="null"
>
<generator class="assigned">
</generator>
</id>
<property
name="name"
type="java.lang.String"
/>
</class>
configuration
<property
name="hibernate.cache.enable_cache">true</property>
<property
name="hibernate.cache.use_query_cache">true</property>
<property
name="hibernate.statement_cache.size">25</property>
<property name="hibernate.cache.provider_class">
org.hibernate.cache.EhCacheProvider</property>
--- Patrick Casey <[EMAIL PROTECTED]> wrote:
>
> You know, that's just not what I'm seeing. I even
> wrote a little
> test app.
>
> Criteria c =
> HibHelper.getSession().createCriteria("core.User");
> c.setCacheable(true);
> List l = c.list();
> // the above executes a single query to fill the
> cache
> // I get one and only one query in my SQL trace
> c =
>
HibHelper.getTransientTempSession().createCriteria("core.User");
> // a new criteria on a new session
> c.setCacheable(true);
> l = c.list();
> // the above should hit the cache
> // lo and behold, we get 1,000 individual selects
> // as every single key from the original select is
> iteratively
> // fetshed one at a time
>
> Perhaps I have something configured wrong?
>
> The point in my mapping where I enable the cache:
>
> <class name="core.Person" table="person"
> dynamic-update="true">
> <cache usage="read-write" />
> /// blah blah blah
> </class>
>
> The point in my hibernate configuration where I
> enable ehcache:
>
> <property
>
name="hibernate.cache.use_query_cache">true</property>
>
> My ehcache.xml where I set a nice spiffy default
> cache:
>
> <defaultCache
> maxElementsInMemory="10000"
> eternal="false"
> timeToIdleSeconds="1200"
> timeToLiveSeconds="1200"
> overflowToDisk="false"
> diskPersistent="false"
> diskExpiryThreadIntervalSeconds="120"
> />
>
> Is there some additional parm I have to set to
> enable the L2 object
> cache here? Because from what I'm seeing here, the
> keys are getting cached,
> but the object themselves are not, leading to the
> aforementioned 1000
> selects by key (which is about 200X worse than just
> one massive select).
>
> --- Pat
>
> > -----Original Message-----
> > From: Konstantin Ignatyev
> [mailto:[EMAIL PROTECTED]
> > Sent: Saturday, September 24, 2005 8:06 PM
> > To: Tapestry users
> > Subject: RE: Hibernate session model
> >
> > Query cache is slightly different thing than
> > Hibernate's 2L cache.
> > L2 cache holds objects and L2 cache will supply
> > objects by keys in Query cache.
> >
> > --- Patrick Casey <[EMAIL PROTECTED]> wrote:
> >
> > >
> > > Henri,
> > >
> > > Where are you getting your information from?
> > > According to my copy of
> > > Hibernate in action (pp 291 Secion 7.6.3).
> > >
> > > "Note that the query cache does *not* cache the
> > > entities returning
> > > in the query reslut set, just the identifier
> > > values."
> > >
> > > Am I missing something here?
> > >
> > > --- Pat
> > >
> > > > -----Original Message-----
> > > > From: Henri Dupre
> [mailto:[EMAIL PROTECTED]
> > > > Sent: Saturday, September 24, 2005 9:12 AM
> > > > To: Patrick Casey
> > > > Cc: Tapestry users
> > > > Subject: Re: Hibernate session model
> > > >
> > > > On 9/23/05, Patrick Casey
> <[EMAIL PROTECTED]>
> > > wrote:
> > > > >
> > > > > >
> > > > > > I rather have a DB Query than a lazy
> > > exception. And not for every
> > > > call!
> > > > > > The hibernate cache is here for that.
> > > > >
> > > > > If memory serves, the hibernate cache caches
> > > keys, not objects.
> > > >
> > > > This is not true. The hibernate second level
> cache
> > > is a map with <key,
> > > > object>,
> > > > If your key is found in the cache then it
> > > retrieves the object (memory
> > > > or file depending on your cache
> configuration).
> > > > We achieve a high performance by having it
> > > properly configured on a
> > > > per-class basis even with complex queries.
> > > >
> > > > Henri.
> > > >
> > > >
> > >
> >
>
---------------------------------------------------------------------
> > > > To unsubscribe, e-mail:
> > > [EMAIL PROTECTED]
> > > > For additional commands, e-mail:
> > > [EMAIL PROTECTED]
> > >
> > >
> > >
> > >
> > >
> >
>
---------------------------------------------------------------------
> > > To unsubscribe, e-mail:
> > > [EMAIL PROTECTED]
> > > For additional commands, e-mail:
> > > [EMAIL PROTECTED]
> > >
> > >
> >
> >
> >
>
---------------------------------------------------------------------
> > To unsubscribe, e-mail:
> [EMAIL PROTECTED]
> > For additional commands, e-mail:
> [EMAIL PROTECTED]
>
>
>
>
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> [EMAIL PROTECTED]
> For additional commands, e-mail:
> [EMAIL PROTECTED]
>
>
Konstantin Ignatyev
PS: If this is a typical day on planet earth, humans will add fifteen million
tons of carbon to the atmosphere, destroy 115 square miles of tropical
rainforest, create seventy-two miles of desert, eliminate between forty to one
hundred species, erode seventy-one million tons of topsoil, add 2,700 tons of
CFCs to the stratosphere, and increase their population by 263,000
Bowers, C.A. The Culture of Denial: Why the Environmental Movement Needs a
Strategy for Reforming Universities and Public Schools. New York: State
University of New York Press, 1997: (4) (5) (p.206)
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]