隨筆-57  評(píng)論-202  文章-17  trackbacks-0

                Hibernate通過(guò)Lifecycle、Validatable接口制定了實(shí)體對(duì)象CRUD過(guò)程中的回調(diào)方式。
                Lifecycle接口中的onSave、onUpdate、onDelete方法,如果返回true則意味著需要中止執(zhí)行相應(yīng)的操作過(guò)程。如果代碼運(yùn)行期間拋出了CallbackException,對(duì)應(yīng)的操作也會(huì)被中止。注意,不要試圖在這些方法中調(diào)用Session進(jìn)行持久化操作,這些方法中Session無(wú)法正常使用。
                Validatable.validate方法將在實(shí)體被持久化之前得到調(diào)用以對(duì)數(shù)據(jù)進(jìn)行驗(yàn)證。此方法在實(shí)體對(duì)象的生命周期內(nèi)可能被數(shù)次調(diào)用,因此,此方法僅用于數(shù)據(jù)本身的邏輯校驗(yàn),而不要試圖在此實(shí)現(xiàn)業(yè)務(wù)邏輯的驗(yàn)證。



                Hibernate還引入了Interceptor,為持久化事件的捕獲和處理提供了一個(gè)非侵略性的實(shí)現(xiàn)。Interceptor接口定義了Hibernate中的通用攔截機(jī)制。Session創(chuàng)建時(shí)即可指定加載相應(yīng)的Interceptor,之后,此Session的持久化操作動(dòng)作都將首先經(jīng)由此攔截器捕獲處理。簡(jiǎn)單的加載范例如下:

          SessionFactory factory = config.buildSessionFactory();
          Interceptor it 
          = new MyInterceptor();
          session 
          = sessionFactory.openSession(it);

                需要注意的是,與Lifecycle相同,Interceptor的方法中不可通過(guò)Session實(shí)例進(jìn)行持久化操作。
          posted on 2005-07-21 18:35 小米 閱讀(3369) 評(píng)論(1)  編輯  收藏 所屬分類: Hibernate

          評(píng)論:
          # re: 《深入淺出Hibernate》讀書筆記(7)——回調(diào)與攔截機(jī)制 2007-01-09 14:49 | david[匿名]
          mark 100   回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 河源市| 唐山市| 西丰县| 松原市| 灌南县| 贡觉县| 玉山县| 榆林市| 社旗县| 岳普湖县| 南江县| 邢台县| 浮梁县| 青田县| 嘉善县| 开原市| 伊春市| 湖口县| 如东县| 新安县| 郓城县| 滨海县| 曲松县| 陆良县| 南康市| 承德市| 九寨沟县| 雅安市| 桦南县| 会理县| 吉林省| 九龙县| 明溪县| 林芝县| 松原市| 浙江省| 通许县| 常德市| 阿图什市| 额尔古纳市| 改则县|