1。hibernate一級緩存為session維護的。二級緩存為sessionfactory維護。
2。一級緩存持久化的是OID唯一的對象,所以不會存在并發(fā)訪問的問題。二級緩存存在并發(fā)訪問問題。所以二級緩存根據(jù)訪問和修改的頻率以及是否集群分為4個等級。總體上說,一級緩存保存在內(nèi)存中,二級可以保存在內(nèi)存或硬盤中,為散列保存。
3。一級緩存為必須的,二級為可插入的緩存,其功能為第三方提供。
4。二級緩存保存的為很少修改的對象,因為會存在并發(fā)訪問問題,所以盡量減少對兌現(xiàn)的修改操作,減少寫入的臟數(shù)據(jù)。
5。一級緩存為session全程存在,二級緩存可以設(shè)定過期時間。
6。需要在hibernate.cfg.xml中設(shè)定使用二級緩存。還需要在指定的映射文件中,設(shè)定需要被緩存的實體對象。
7。假如映射文件對象所對應(yīng)的屬性為set類型,還需要再次指明被緩存,這樣只會使set類型的屬性也就是getItems()取出的被緩存。而其所對應(yīng)的實體并未被緩存,如需要,需要在xml中指明。