SSH問題整理

小編昨天寫了一些關於hibernate的教程,但是一直不能通過,小編也沒有太多時

間,加上很久沒有更新了,

今天小編就整理一下,小編遇到的幾個問題,

1,在hibernate生成實體類的時候,實現java.io.Serializable接口, 以支持對象序列

化,

並且在多表關聯上的時候不能懶加載,使用

1 fetch=FetchType.LAZY

否則在涉及多表關聯查詢的時候,裝入json時會報序列化錯誤,

2.hibernate中查詢時不需要事務的,在執行數據修改時出現 read-only時,是由

於事務沒有開啟,在整合中需要加入以下

1 在spring配置文件加上
2 
3 
4 
5 

6 在Dao層方法 加上@Transactional

3刷新緩存與髒檢查

commit將觸發刷新緩存操作(flush), 而刷新緩存實際上是把Session緩存中的對象的改變同

步到數據庫.

hibernate如何知道緩存中的持久態對象是否發生改變 ?

髒檢查! 受Session管理的持久態對象都會生成一個快照, 刷新緩存時, 將對象的各項信息

與快照進行對比, 如果不一致, 則該對象稱為髒對象, 所有髒對象上發生的改變都會同步到

數據庫.

4 hibernate把對象狀態分為三種:

1. 瞬時態(Transient)

不受Session管理的, 數據庫沒有記錄與之對應的對象, 是瞬時態對象

2. 持久態(Persistent)

受Session管理的對象, 是持久態對象

3. 遊離態(Detached), 也稱為"脫管"狀態

不受Session管理的, 數據庫有記錄與之對應的對象, 是遊離態對象

5 Session具有緩存:

save方法實際上是把對象放入緩存中

delete方法實際上是把對象從緩存中移除


分享到:


相關文章: