1。hibernate一级缓存为session维护的。二级缓存为sessionfactory维护。
2。一级缓存持久化的是OID唯一的对象,所以不会存在并发访问的问题。二级缓存存在并发访问问题。所以二级缓存根据访问和修改的频率以及是否集群分为4个等级。总体上说,一级缓存保存在内存中,二级可以保存在内存或硬盘中,为散列保存。
3。一级缓存为必须的,二级为可插入的缓存,其功能为第三方提供。
4。二级缓存保存的为很少修改的对象,因为会存在并发访问问题,所以尽量减少对兑现的修改操作,减少写入的脏数据。
5。一级缓存为session全程存在,二级缓存可以设定过期时间。
6。需要在hibernate.cfg.xml中设定使用二级缓存。还需要在指定的映射文件中,设定需要被缓存的实体对象。
7。假如映射文件对象所对应的属性为set类型,还需要再次指明被缓存,这样只会使set类型的属性也就是getItems()取出的被缓存。而其所对应的实体并未被缓存,如需要,需要在xml中指明。