少年阿賓

          那些青春的歲月

            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
          主站蜘蛛池模板: 文成县| 新源县| 昌邑市| 贵阳市| 新宁县| 陵川县| 甘德县| 五寨县| 舟曲县| 巩义市| 雅江县| 延安市| 盐池县| 吉首市| 县级市| 伊春市| 镇赉县| 新巴尔虎右旗| 永兴县| 东莞市| 龙川县| 桐梓县| 古田县| 罗城| 定安县| 高邮市| 策勒县| 广汉市| 柳林县| 营山县| 宝应县| 墨脱县| 东至县| 罗甸县| 长海县| 祁阳县| 蓬溪县| 华坪县| 台南市| 阿拉善右旗| 德阳市|