-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 8 posts ] 
Author Message
 Post subject: Hibernate Second Level Caching
PostPosted: Wed Nov 30, 2005 9:01 am 
Regular
Regular

Joined: Sat Sep 03, 2005 9:07 am
Posts: 87
Location: Graz, AUSTRIA
Hab eine generelle Frage zum Hibernate Second Level Caching.
Genügt es, in der Hibernate.cfg.xml, wenn man den Eintrag macht:
Code:
<property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>


oder muss man zusätzlich bei jeder Klasse noch folgendes angeben:
Code:
<cache
    usage="transactional|read-write|nonstrict-read-write|read-only" />


Wenn ja, welchen Mode würdet ihr empfehlen (hab einige Schreibzugriffe, aber zu 80-85% nur Lesezugriffe)

Gibt es eine Möglichkeit dann herauszufinden, ob Hibernate etwas aus dem Cache holt oder neu aus der Datenbank?

THX


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 01, 2005 8:28 am 
Beginner
Beginner

Joined: Fri Jul 16, 2004 3:21 am
Posts: 40
man muss noch hinzufügen:

hibernate.cfg.xml
<property name="hibernate.cache.use_query_cache">true</property>

- ein ehcache.xml erstellen und in den Classpath legen
- pro Cache eine Region definieren im ehcache.xml File
- jeweils die Query cachen : query.setCacheable(true);
- und eine Region angeben : query.setCacheRegion("query.CustomerList");
- in den Mappingfiles die Art angeben: <cache usage="nonstrict-read-write" />


gruss pfenn


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 01, 2005 8:28 am 
Beginner
Beginner

Joined: Fri Jul 16, 2004 3:21 am
Posts: 40
man muss noch hinzufügen:

hibernate.cfg.xml
<property name="hibernate.cache.use_query_cache">true</property>

- ein ehcache.xml erstellen und in den Classpath legen
- pro Cache eine Region definieren im ehcache.xml File
- jeweils die Query cachen : query.setCacheable(true);
- und eine Region angeben : query.setCacheRegion("query.regionName");
- in den Mappingfiles die Art angeben: <cache usage="nonstrict-read-write" />


gruss pfenn


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 01, 2005 8:35 am 
Regular
Regular

Joined: Sat Sep 03, 2005 9:07 am
Posts: 87
Location: Graz, AUSTRIA
Danke erstmals für die ausführliche Antwort.

Eine Frage, was verstehst du unter Region?

Welche Art des Cachings würdest du empfehlen?


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 01, 2005 11:08 am 
Beginner
Beginner

Joined: Fri Jul 16, 2004 3:21 am
Posts: 40
Im ehcache File muss man pro Query ein Name vergeben

Code:
<cache name="query.regionName" 


Der muss mit dem Aufruf im Java übereinstimmen

Code:
query.setCacheRegion("query.regionName");


Das meine ich mit Region :-)

Was für eine Art Caching, kann ich dir nicht sagen, würde auf try and error tippen und messen was für deine App das Beste ist.

gruss pfenn


Top
 Profile  
 
 Post subject:
PostPosted: Wed Feb 22, 2006 9:51 am 
Beginner
Beginner

Joined: Mon Jan 24, 2005 11:33 am
Posts: 24
Location: Stuttgart, Germany
Mein Verständnis von ehcache ist, dass man nicht unbedingt einen named cache angeben muss, damit Hibernate diesen cache überhaupt verwendet.
Dazu genügt der defaultCache.

Ich habe allerdings festgestellt, dass trotz des aktivierten caches bei jedem SQL statement eine Anfrage an die Datenbank geschickt wird. Dadurch ist die performance in einem low-bandwidth Netz sehr schlecht.
Sind die DB Zugriffe trotz aktiven second level caches normal?

Gruß,
Helmut


Top
 Profile  
 
 Post subject:
PostPosted: Thu Oct 19, 2006 9:52 am 
Newbie

Joined: Mon Sep 04, 2006 9:03 am
Posts: 9
Nein das ist nicht normal. Wenn alle Objekte im Second Level Cache sind wird keine DB Anfrage gestellt.

VG
Alex


Top
 Profile  
 
 Post subject:
PostPosted: Thu Oct 19, 2006 5:32 pm 
Expert
Expert

Joined: Tue Nov 23, 2004 7:00 pm
Posts: 570
Location: mostly Frankfurt Germany
Ob der Cache benutzt wird, hängt von den Queries ab, ob Du nur die Objekte oder auch die Beziehungen cachsts etc.

Der Query Cache wird weggeworfen, wenn ein insert Statement in die betroffene Tabelle passiert. Wenn Du permanent in die Tabellen schreibst macht der Query Cache keinen Sinn.

_________________
Best Regards
Sebastian
---
Training for Hibernate and Java Persistence
Tutorials for Hibernate, Spring, EJB, JSF...
eBook: Hibernate 3 - DeveloperGuide
Paper book: Hibernate 3 - Das Praxisbuch
http://www.laliluna.de


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 8 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.