一级缓存:
一级缓存的生命周期很短,与session同时,也叫session级缓存或事务级缓存
支持一级缓存的方法:
* get()
* load()
* iterate() ---查询实体对象的时候,非实体对象不缓存
管理一级缓存的方法:
* session.clear()---清空整个缓存
* session.evict()---逐出某个实体对象
如何避免一次性大量的实体数据入库,导致的内存溢出
* 先flush,再clear
如果数据量特别大,考虑jdbc实现,如果jdbc仍然无法满足需求,看数据库是否提供了特定的导入工具
二级缓存:
二级缓存也称进程级的缓存或SessionFactory级的缓存,二级缓存可以被所有的session共享
二级缓存的生命周期和SessionFactory的生命周期一致,SessionFactory可以管理二级缓存
二级缓存的配置和使用:
* 将ehcache.xml拷贝到工程src目录下
* 开启二级缓存,修改hibernate.cfg.xml文件
* 指定哪些实体类使用二级缓存
* 在映射文件中采用<cache>标签
* 在hibernate.cfg.xml中采用<class-cache>标签