OID檢索:
get和load都是通過id來查詢數(shù)據(jù)的。
get:直接加載淑趾。一執(zhí)行就會執(zhí)行SQL語句阳仔。
load:懶加載。返回一個(gè)對象的代理扣泊。
- 生成javassist的代理對象近范。
image.png
還有一個(gè)問題:數(shù)據(jù)庫的字符編碼可eclipse的編碼好像不一樣嘶摊,在無論什么類型的數(shù)據(jù)都顯示為?评矩?叶堆?
刪除數(shù)據(jù)的兩種方式:
先獲取要刪除的數(shù)據(jù)對象,然后調(diào)用delete()方法稚照。
這種方式必須手動開關(guān)事物蹂空。在配置文件里面配置事物的自動提交是無效的。
配置文件里面配置的事物自動提交果录,只對insert有效。
先創(chuàng)建一個(gè)javabean對象咐熙,在調(diào)用delete方法刪除弱恒。(推薦,性能更好)
- 創(chuàng)建對象也只是為了傳遞一個(gè)id值棋恼,delete方法底層會轉(zhuǎn)化為delete語句操作數(shù)據(jù)庫返弹。
update:
方式一:通過get獲取數(shù)據(jù),調(diào)用set方法爪飘,事物提交义起,自動執(zhí)行update語句。
直接調(diào)用setXXX()师崎,來修改數(shù)據(jù)庫即可默终。
session.update();可以寫,可以不寫犁罩。事物提交會自動修改齐蔽。
- 有id會更新,沒有id會報(bào)錯床估。
缺點(diǎn)含滴,其實(shí)是會更新表中的所有字段的,效率低丐巫。
方式二:自己封裝bean對象谈况,設(shè)置ID,需要調(diào)用update方法递胧。
- 神奇的是這種方式不會執(zhí)行update語句1稀!N阶拧F糜铡(后續(xù))
saveorUpdate()方法也很神奇,前面調(diào)用了setXXX如果有id就會update赊锚,沒有就會insert治筒。
save():
- 有id會更新