來源:https://www.cnblogs.com/hym-pcitc/p/6023362.html
session.flush()和session.clear()就針對(duì)session的一級(jí)緩存的處理。
簡(jiǎn)單的說,
1 session.flush()的作用就是將session的緩存中的數(shù)據(jù)與數(shù)據(jù)庫同步。
2 session.clear()的作用就是清除session中的緩存數(shù)據(jù)(不管緩存與數(shù)據(jù)庫的同步)。
執(zhí)行完session.flush()時(shí),并不意味著數(shù)據(jù)就肯定持久化到數(shù)據(jù)庫中的,因?yàn)槭聞?wù)控制著數(shù)據(jù)庫,如果事務(wù)提交失敗了,緩存中的數(shù)據(jù)還是照樣會(huì)被回滾的。
flush本意是沖刷,這個(gè)方法大概取自它引申義沖馬桶的意思,馬桶有個(gè)池子,你往里面扔?xùn)|西,會(huì)暫時(shí)保存在池子里,只有你放水沖下去,東西才會(huì)進(jìn)入下水道。
同理很多流都有一個(gè)這樣的池子,專業(yè)術(shù)語叫緩沖區(qū),當(dāng)你print或者write的時(shí)候,會(huì)暫時(shí)保存在緩沖區(qū),并沒有發(fā)送出去,這是出于效率考慮的,因?yàn)閿?shù)據(jù)不會(huì)自己發(fā)送過去,必須有其他機(jī)制,而且這個(gè)很消耗資源,就像馬桶你需要很多水,才能沖走,你如果扔一點(diǎn)東西,就沖一次水,那你水費(fèi)要爆表了,同樣如果你寫一行文字,或者一個(gè)字節(jié),就要馬上發(fā)送出去,那網(wǎng)絡(luò)流量,CPU使用率等等都要爆表了,所以一般只有在你真正需要發(fā)送否則無法繼續(xù)的時(shí)候,調(diào)用flush,將數(shù)據(jù)發(fā)送出去。
http://blog.csdn.net/leidengyan/article/details/7514484
session.flush()和session.clear()就針對(duì)session的一級(jí)緩存的處理。