论坛首页 Java企业应用论坛

请教一个关于hibernate的拦截器(Interceptor)的问题。

浏览 4961 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-09-19  
我的业务要求是,当A的属性发生改变后,要改变B的一些属性(B是A的一个属性)。
映射文件的结构
  <bean id="userDAO" parent="transactionProxyTemplate">
    <property name="proxyInterfaces">
      <list><value>com.journal.dao.UserDAO</value></list>
    </property>
    <property name="target">
      <bean class="com.journal.dao.hibernate.UserDAOHibernate">
        <property name="sessionFactory">
          <ref local="sessionFactory"/>
        </property>
      </bean>
    </property>
  </bean>

  <bean id="transactionProxyTemplate" abstract="true" lazy-init="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    <property name="transactionManager">
      <ref bean="transactionManager"/>
    </property>
    <property name="transactionAttributes">
      <props>
        <prop key="save*">PROPAGATION_REQUIRED</prop>
        <prop key="update*">PROPAGATION_REQUIRED</prop>
        <prop key="remove*">PROPAGATION_REQUIRED</prop>
        <prop key="create*">PROPAGATION_REQUIRED</prop>
        <prop key="submit*">PROPAGATION_REQUIRED</prop>
        <prop key="withdraw*">PROPAGATION_REQUIRED</prop>
        <prop key="distribute*">PROPAGATION_REQUIRED</prop>      
      </props>
    </property>
  </bean>

  <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory">
      <ref local="sessionFactory"/>
    </property>
  </bean>

  <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource">
      <ref local="dataSource"/>
    </property>
  </bean>
   发表时间:2007-09-19  
具体说一下:比如User中有个字段是Group,一个user的缺席变成了True,或者这个user被删除了,这时就得修改Group的数量(减一),大概的业务需求就是这样的。

刚开始的时候我在sessionfactory中注入的拦截器,可是不知道怎么将已经减一的那个group持久化到数据库中?

请问我应该在什么地方注入拦截器好?
0 请登录后投票
   发表时间:2007-09-20  
怎么就光有人看,没人回呢?
现在这得人气比原来低了好多啊。
0 请登录后投票
   发表时间:2007-09-20  
可否转换一下思路,使用Spring的AOP来拦截,按照你的需求,在update/delete A时候触发拦截器,调用B相关的方法来修改B的数量……这样就不用考虑映射问题了
0 请登录后投票
   发表时间:2007-09-20  
能否再具体的说说呢。
0 请登录后投票
   发表时间:2007-09-21  
怎么就没人关注一下呢?
0 请登录后投票
   发表时间:2007-10-06  
当用户在执行UserAction的Delete方法的时候,必然会调用你UserService的那个Delete方法对不对?
用Spring写一个Action的after拦截器是不成问题吧(我这里是用Struts2的拦截器,Spring肯定有更强大的),这个时候你就可以在拦截器里通过传过来已经删除的User id号把数据库记录给更新了。
0 请登录后投票
   发表时间:2007-12-28  
既然B是A的一个属性,况且 这又是一个单一业务,非一类问题的业务,总觉的用拦截器不太合适, 倒不如在Service中程序控制,级联更新更舒服。
0 请登录后投票
   发表时间:2007-12-28  
用aop 做比较好,这样不会打乱程序的结构
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics