本文研究的主要是Hibernate的Session_flush與隔離級別,具體介紹和實例如下。
我們先來看一些概念:
1.臟讀:臟讀又稱為無效數(shù)據(jù)的讀出,是指在數(shù)據(jù)庫訪問中,事物T1將某一值修改,然后事物T2讀取該值,此后T1因為某種原因撤銷對該值的修改,這就導致了T2所讀取的數(shù)據(jù)是無效的。臟讀就是指當一個事物正在訪問數(shù)據(jù),并且對數(shù)據(jù)進行了修改,而這種修改還沒有提交到數(shù)據(jù)庫中,這時,另外一個事物也訪問這個數(shù)據(jù),然后使用了這個數(shù)據(jù)。因為這個數(shù)據(jù)還是沒有提交的數(shù)據(jù),那么另外一個事物讀到的這個數(shù)據(jù)就是臟數(shù)據(jù),依據(jù)臟數(shù)據(jù)所做的操作是不正確的。
2.不可重復讀:比如我在讀一個帖子,我查出來的數(shù)據(jù)是張三、李四,然后我一刷新發(fā)現(xiàn)最開始的張三變成了張八,這就是所謂的不可重復讀,因為我讀出的數(shù)據(jù)沒重復了嘛。
3.幻讀:我在查數(shù)據(jù)的時候,開始查出來的記錄為3條,我一刷新,發(fā)現(xiàn)記錄變?yōu)榱?條,這就是幻讀。
4.提交讀:提交了之后才可以讀取,Oracle默認就是這個,這種方式是不存在臟讀的。
5.可重復度:很顯然是和不可重復讀相反的,它可以避免不可重復讀,但是這個不能避免幻讀。
6.序列化:這種方式非常嚴格,通俗的說就是,當我在做一件事情的時候,其他任何人都不能做,非常安全,但是效率極低。
隔離級別下面我們通過實際的例子來體會Hibernate清除緩存的應(yīng)用。
Hibernate映射數(shù)據(jù)庫和主鍵的生成策略有關(guān)。
UUID的方式生成主鍵的例子:
public class User { private String uid; private String uname; private Date birthday; public String getUid() { return uid; } public void setUid(String uid) { this.uid = uid; } public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } }
當前名稱:Hibernate的Session_flush與隔離級別代碼詳解-創(chuàng)新互聯(lián)
文章起源:http://www.aaarwkj.com/article2/coiiic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、網(wǎng)站維護、虛擬主機、服務(wù)器托管、靜態(tài)網(wǎng)站、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)