少年阿賓

          那些青春的歲月

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







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

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

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

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

          引用
          一個用戶的session不關(guān)閉影不影響另一個用戶

          因為session由spring來管理,很安全,不會出現(xiàn)這個種并發(fā)問題. 

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

          希望對你有所幫助!



          posted on 2013-04-19 21:28 abin 閱讀(591) 評論(0)  編輯  收藏 所屬分類: hibernate
          主站蜘蛛池模板: 饶河县| 垫江县| 哈巴河县| 循化| 江城| 彭阳县| 化州市| 彰化县| 宝山区| 丰顺县| 密云县| 龙海市| 津市市| 新蔡县| 古浪县| 彭水| 舟曲县| 平凉市| 项城市| 新邵县| 鹤壁市| 晋城| 乐亭县| 中卫市| 资兴市| 广饶县| 铜陵市| 舒兰市| 皋兰县| 莱阳市| 甘肃省| 石首市| 靖远县| 青阳县| 师宗县| 道真| 行唐县| 绍兴市| 桃江县| 姚安县| 临夏市|