數(shù)據(jù)加載中……
          [Original]Hibernate持久與游離

                  在Hbibernate中有自己的一套機制:FlushMode,它控制著持久化對象與數(shù)據(jù)庫的關系。FlushMode有四種狀態(tài):NERVER、AUTO、COMMIT和ALWAYS。默認值為AUTO。Spring中使用Hibernate時,會將FlushMode初始化為AUTO,不過在使用OpenSessionInViewFilter(Spring有自己的一個transcation,不過它只是作用在service層,如果想使持久化對象保留到view層,那么啟用這個過濾器之后就可以了)過濾器之后,Spring會將FlushMode設置為NERVER(表示持久化對象不在于數(shù)據(jù)庫中數(shù)據(jù)實時關聯(lián))。不知道大家在工程中是否用到了spring提供的事務,在用到spring提供的HibernateTranscationManager管理事務時。當調(diào)用的方法位于該管理器之下時,spring會臨時的將FlushMode修改為AUTO狀態(tài),這樣如果你在view層有一個持久化對象,并且修改了這個持久化對象的狀態(tài),spring會自動將這個持久化對象的狀態(tài)更新到數(shù)據(jù)庫中去。這樣可能會帶來困惑:明明沒有更新數(shù)據(jù)庫,怎么數(shù)據(jù)庫中的值發(fā)生改變了呢?其實這也是持久層的意義所在:持久是將數(shù)據(jù)保存在持久層中的對象上,并使對象與數(shù)據(jù)是一致的,如果持久化對象狀態(tài)發(fā)生改變,成為了游離態(tài),類似用jdbc取出Object之后close了connection,這樣對象與數(shù)據(jù)庫就脫離了,也就是游離。歡迎大家來拍磚^_^

          posted on 2008-01-09 13:28 牛浪de流 閱讀(391) 評論(0)  編輯  收藏 所屬分類: Framework

          主站蜘蛛池模板: 旬阳县| 错那县| 霸州市| 江川县| 长白| 龙岩市| 无极县| 婺源县| 吉安县| 杂多县| 宁乡县| 大渡口区| 正蓝旗| 桐乡市| 静安区| 诸暨市| 林西县| 克什克腾旗| 宜阳县| 鄄城县| 吉安县| 漠河县| 上蔡县| 彭泽县| 武邑县| 错那县| 射阳县| 秦皇岛市| 平武县| 来宾市| 常州市| 宜川县| 宁德市| 黄陵县| 襄垣县| 万年县| 孟州市| 雷波县| 神池县| 奉贤区| 靖宇县|