HIBERNATE的SESSION和事務

yongbuyanbai發表於2008-11-16
以往開發模式總是針對SESSION-PER-REQUEST來進行,雖然有的時候很棒,但是對於一個相對長業務會話中,存在著多個操作的原子會話,操作期間有使用者的考慮時間(跨頁面),如果採用SESSION持久化上下文的話,可以在一個業務下儲存這個SESSION,在提交方式上設定手動提交,這樣就可以在一個SESSION中應用多個事務了,而且不用每次事務結束都同步資料庫,只有在原子操作完成的情況才手動同步,但是有兩個問題不理解:
1.
使用者期間有思考時間,如果這個時候一直持有SESSION的例項,那麼JDBC連線應該也是一直連線著,長時間的連線會影響併發訪問的速度.但是每次事務結束釋放了連線,又是頻繁的連線釋放.這個地方應該如何來理解?
HIBERNATE中的SESSION例項的建立是否就已經開啟了JDBC連線,是否可以在需要的時候才開啟連線,而不是例項化SESSION的時候就建立好了JDBC連線,如何設定?
2.我們保留持久化上下文的一個目的是解決懶載入問題,也就是讓我們需要應用的實體在受管的環境下,是否實體在受管環境下的話,表示他們與資料庫的連線也必須開啟,如果關閉的話,就不存在受管的情況了.實際和上面的問題差不多:SESSION例項建立後是否JDBC連線就已經開啟?

[該貼被yongbuyanbai於2008-11-16 10:25修改過]

相關文章