1.開啟Session不會馬上取得Connection,而是在最後真正需要連接資料庫進行更新或查詢時才會取 得Connection,如果有設定Connection pool,則從Connection pool中取得Connection,而關閉Session時,如果有設定Connection pool,則是將Connection歸還給Connection pool,而不是直接關閉Connection。
2.開啟一個Session會建立一個Persistence context ,它可以進行快取管理、dirty check等
3.所有的讀取、更新、插入等動作,則是在Transaction中完成
如果未能發現相符合的資料,則get()方法會返回null,而load()方 法會丟出ObjectNotFoundException
在進階的應用中,load()方法可以返回代理(proxy)物件,在必要時才真正查詢資料庫取得對應資料,並可充分利用快取機制
Session提供了一個saveOrUpdate()方法,為資料的儲存或更新提供了一個統一的操作介面
藉由定義映射文件時,設定< id>標籤的unsaved-value來決定什麼是新的值必需,什麼是已有的值必須更新:
- any:總是儲存
- none:總是更新
- null:id為null時儲存(預設)
- valid:id為null或是指定值時儲存
Merge用在取出一个物件两次的情况下,UnUniqueObject
用session.merge代替session.update