Ich erhalte keine Geschwindigkeitsverbesserung bei der Verwendung von Ehcache mit Hibernate
Hier sind die Ergebnisse, die ich erhalte, wenn ich den Test unten ausführe. Der Test liest 80 Stop-Objekte und dann die gleichen 80 Stop-Objekte wieder mit dem Cache.
Beim zweiten Lesen wird der Cache getroffen, aber es gibt keine Verbesserung der Geschwindigkeit. Irgendwelche Ideen, was ich falsch mache?
Speed Test:
First Read: Reading stops 1-80 : 288ms
Second Read: Reading stops 1-80 : 275ms
Cache Info:
elementsInMemory: 79
elementsInMemoryStore: 79
elementsInDiskStore: 0
JunitCacheTest
public class JunitCacheTest extends TestCase {
static Cache stopCache;
public void testCache()
{
ApplicationContext context = new ClassPathXmlApplicationContext("beans-hibernate.xml");
StopDao stopDao = (StopDao) context.getBean("stopDao");
CacheManager manager = new CacheManager();
stopCache = (Cache) manager.getCache("ie.dataStructure.Stop.Stop");
//First Read
for (int i=1; i<80;i++)
{
Stop toStop = stopDao.findById(i);
}
//Second Read
for (int i=1; i<80;i++)
{
Stop toStop = stopDao.findById(i);
}
System.out.println("elementsInMemory " + stopCache.getSize());
System.out.println("elementsInMemoryStore " + stopCache.getMemoryStoreSize());
System.out.println("elementsInDiskStore " + stopCache.getDiskStoreSize());
}
public static Cache getStopCache() {
return stopCache;
}
}
HibernateStopDao
@Repository("stopDao")
public class HibernateStopDao implements StopDao {
private SessionFactory sessionFactory;
@Transactional(readOnly = true)
public Stop findById(int stopId) {
Cache stopCache = JunitCacheTest.getStopCache();
Element cacheResult = stopCache.get(stopId);
if (cacheResult != null){
return (Stop) cacheResult.getValue();
}
else{
Stop result =(Stop) sessionFactory.getCurrentSession().get(Stop.class, stopId);
Element element = new Element(result.getStopID(),result);
stopCache.put(element);
return result;
}
}
}
ehcache.xml
<cache name="ie.dataStructure.Stop.Stop"
maxElementsInMemory="1000"
eternal="false"
timeToIdleSeconds="5200"
timeToLiveSeconds="5200"
overflowToDisk="true">
</cache>
stop.hbm.xml
<class name="ie.dataStructure.Stop.Stop" table="stops" catalog="hibernate3" mutable="false" >
<cache usage="read-only"/>
<comment></comment>
<id name="stopID" type="int">
<column name="STOPID" />
<generator class="assigned" />
</id>
<property name="coordinateID" type="int">
<column name="COORDINATEID" not-null="true">
<comment></comment>
</column>
</property>
<property name="routeID" type="int">
<column name="ROUTEID" not-null="true">
<comment></comment>
</column>
</property>
</class>
Stopp
public class Stop implements Comparable<Stop>, Serializable {
private static final long serialVersionUID = 7823769092342311103L;
private Integer stopID;
private int routeID;
private int coordinateID;
}