少年阿賓

          那些青春的歲月

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks
          我是一個初學者. 
          我建了一個classes表和一個students表,表示班級和學生,其中學生里面有一個外鍵關聯到班級表. 
          然后學生類里面建了一個classes的屬性, 
          用session取出學生后,如果關閉session的話,就無法讀取到學生類里的classes值,沒有關閉就能讀取到. 
          請問這個session會不會影響到其他用戶的訪問呢? 
          就是說如果有兩個用戶并行操作數據庫的話,一個用戶的session不關閉影不影響另一個用戶呢?







          J2EE中最大的一個觀念就是分層.. 

          session是持久層的東東.不可竄到別的層.. 

          你的這個問題其實就是延遲加載的問題. 

          從理論的角度講,最好是用一個就關一個.防止資源消耗. 
          但由于hibernate中的延遲加載,所以出現了你的關閉session的話,就無法讀取到學生類里的classes值問題. 
          這個問題可以用Hibernate.initialize()來解決.也可就使用opensessionview的方式.spring中提供了這樣的filter 
          不知道這在使用中有沒有使用spring.用了就比較方便,也不會出現你所說的 

          引用
          一個用戶的session不關閉影不影響另一個用戶

          因為session由spring來管理,很安全,不會出現這個種并發問題. 

          如果只是使用了Hibernate的話,那得注意了.你在servlet中直接創建session就可能出現并發問題,因為session不是線程安全的,而servlet是多線程的. 
          這時可以使用ThreadLocal來解決這個問題. 

          希望對你有所幫助!



          posted on 2013-04-19 21:28 abin 閱讀(593) 評論(0)  編輯  收藏 所屬分類: hibernate
          主站蜘蛛池模板: 舟曲县| 江阴市| 耿马| 安平县| 九江市| 乌鲁木齐县| 镇赉县| 巴塘县| 紫阳县| 虹口区| 大悟县| 广元市| 留坝县| 贡山| 房山区| 苗栗县| 密云县| 买车| 临泽县| 兴义市| 颍上县| 漳浦县| 安新县| 曲松县| 德安县| 康平县| 大新县| 汤阴县| 朝阳区| 冷水江市| 绩溪县| 神木县| 宝应县| 阳江市| 尚义县| 三门县| 会理县| 肇源县| 光山县| 阳江市| 云安县|