flush-強(qiáng)制提交刷新session
clear--清除session
evict(Obj)將對(duì)象實(shí)例從session緩存清除
session.flush() 不是必須調(diào)用的
session.close()是必須調(diào)用的
session.clear()寫在flush后面
解釋session.flush()的調(diào)用牽扯到事務(wù),首先我們知道在執(zhí)行事務(wù)之前都會(huì)將AutoCommit設(shè)置為false【手動(dòng)提交方式,因?yàn)槟J(rèn)是true自動(dòng)提交的】 當(dāng)AutoCommit為false時(shí) 我們執(zhí)行完事務(wù)就要調(diào)用到session.flush();session.clear();一切處理完后我們要close掉當(dāng)前的這個(gè)session但是當(dāng)我們不做事務(wù)操作的時(shí)候 我們就沒必要去調(diào)用session.flush()和session.clear()。直接session.close()就OK 因?yàn)檫@時(shí)close會(huì)默認(rèn)調(diào)用一次session.flush()。如果使用了ThreadLocal那么就要在close方法里處理一下ThreadLocal。session.flush()的作用是將數(shù)據(jù)庫(kù)與緩存中的數(shù)據(jù)同步 當(dāng)session.clear()后才會(huì)引起緩存數(shù)據(jù)變化方式一:基于實(shí)體類屬性
對(duì)于實(shí)體的PO類,有2個(gè)要求:
1,必須繼承Serializable接口
2,必須重寫equals()方法和hashcode()方法(個(gè)人認(rèn)為不是必須重寫,只要其默認(rèn)hascode能唯一的確定任何一個(gè)Person類即可,當(dāng)然使用聯(lián)合主鍵字段firstname和lastname重寫equals()方法和hashcode()方法后,即可通過firstname和lastname唯一確定一個(gè)Person類,更符合數(shù)據(jù)庫(kù)中firstname和lastname做為聯(lián)合主鍵的設(shè)計(jì))
聯(lián)系客服