OID檢索:
get和load都是通過id來查詢數(shù)據(jù)的。
get:直接加載。一執(zhí)行就會執(zhí)行SQL語句。
load:懶加載。返回一個對象的代理。
- 生成javassist的代理對象。

image.png
還有一個問題:數(shù)據(jù)庫的字符編碼可eclipse的編碼好像不一樣,在無論什么類型的數(shù)據(jù)都顯示為???
刪除數(shù)據(jù)的兩種方式:
先獲取要刪除的數(shù)據(jù)對象,然后調(diào)用delete()方法。
這種方式必須手動開關(guān)事物。在配置文件里面配置事物的自動提交是無效的。
配置文件里面配置的事物自動提交,只對insert有效。
先創(chuàng)建一個javabean對象,在調(diào)用delete方法刪除。(推薦,性能更好)
- 創(chuàng)建對象也只是為了傳遞一個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會報錯。
缺點,其實是會更新表中的所有字段的,效率低。
方式二:自己封裝bean對象,設(shè)置ID,需要調(diào)用update方法。
- 神奇的是這種方式不會執(zhí)行update語句?。。。。ê罄m(xù))
saveorUpdate()方法也很神奇,前面調(diào)用了setXXX如果有id就會update,沒有就會insert。
save():
- 有id會更新