Hibernate Session

本文介绍了Hibernate框架中Session的使用方式,包括开启Session时Connection的获取时机、Persistencecontext的作用及快取管理、dirtycheck机制,以及Transaction中进行的所有读取、更新、插入等操作。文章还探讨了get()与load()方法的区别、saveOrUpdate()方法的应用场景,以及merge方法在解决UnUniqueObject问题中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值