Spring+hibernate+struts

前久写了一贴:"代理模式在Spring+hibernate+struts框架中的应用",引起了比较广泛的讨论,虽然丢砖头的不少,呵呵.

此外在Spring+hibernate+struts框架中,我比较广泛地用到了"适配器模式".故讨论一下.

为了让代码通用,在Spring+hibernate+struts中,我做了个baseDao和baseService类,这两个类是通用的对表维护的操作.这样大多数表维护的代码,只要这两个类就可以了.

当有BUSINESS OBJECT时,从baseService继承产生一个businessServiceIMP类,这时运用"适配器模式",定义IbusinessService接口.
这样就能让接口代码简化.达到了运用适配器模式的目的.
再加上Spring+hibernate+struts框架的优点,可以灵活把DAO层,和SERVICE层的任意类更换掉,相当灵活,举一个Spring+hibernate+struts的配置例子如下:

Java代码 复制代码
  1. <?xml version="1.0" encoding="UTF-8"?>   
  2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">   
  3.   
  4. <beans>   
  5.     <!-- ========================= Start of PERSISTENCE DEFINITIONS ========================= -->   
  6.   
  7.     <!-- Choose the dialect that matches your "dataSource" definition -->   
  8.   
  9.     <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">   
  10.         <property name="driverClassName">   
  11.             <value>org.gjt.mm.mysql.Driver</value>   
  12.         </property>   
  13.         <property name="url">   
  14.             <value>jdbc:mysql://localhost:3306/oa?useUnicode=true&amp;characterEncoding=GBK&amp;autoReconnect=true</value>   
  15.         </property>   
  16.         <property name="username">   
  17.             <value>root</value>   
  18.         </property>   
  19.         <property name="password">   
  20.             <value></value>   
  21.         </property>   
  22.     </bean>   
  23.   
  24.     <bean id="mySessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">   
  25.         <property name="mappingResources">   
  26.             <list>   
  27.                 <value>oa/pojo/Auth.hbm.xml</value>   
  28.                 <value>oa/pojo/Card.hbm.xml</value>   
  29.                 <value>oa/pojo/Fast.hbm.xml</value>   
  30.                 <value>oa/pojo/Fax.hbm.xml</value>   
  31.                 <value>oa/pojo/Note.hbm.xml</value>   
  32.                 <value>oa/pojo/Plan.hbm.xml</value>   
  33.                 <value>oa/pojo/User.hbm.xml</value>   
  34.             </list>   
  35.         </property>   
  36.   
  37.         <property name="hibernateProperties">   
  38.             <props>   
  39.                 <prop key="hibernate.dialect">net.sf.hibernate.dialect.MySQLDialect</prop>   
  40.                 <prop key="hibernate.show_sql">true</prop>   
  41.                 <prop key="hibernate.cglib.use_reflection_optimizer">true</prop>   
  42.             </props>   
  43.         </property>   
  44.   
  45.         <property name="dataSource"><ref bean="myDataSource"/></property>   
  46.     </bean>   
  47.   
  48.   
  49.   
  50.     <!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA); -->   
  51.     <bean id="myTransactionManager" class="org.springframework.orm.hibernate.HibernateTransactionManager">   
  52.         <property name="sessionFactory"><ref local="mySessionFactory"/></property>   
  53.     </bean>   
  54.   
  55.   
  56.     <!-- Base DAO : Hibernate implementation -->   
  57.     <bean id="baseDAO" class="common.spring.dao.BaseDAOImpl">   
  58.         <property name="sessionFactory"><ref local="mySessionFactory"/></property>   
  59.     </bean>   
  60.   
  61.     <!-- Base primary business object implementation -->   
  62.     <bean id="baseServiceSpring" class="common.spring.service.BaseServiceSpringImpl">   
  63.         <property name="baseDAO"><ref local="baseDAO"/></property>   
  64.     </bean>   
  65.   
  66.     <!--  Base SERVICE  -->   
  67.     <bean id="baseService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">   
  68.         <property name="transactionManager"><ref local="myTransactionManager"/></property>   
  69.         <property name="target"><ref local="baseServiceSpring"/></property>   
  70.         <property name="transactionAttributes">   
  71.             <props>   
  72.                 <prop key="get*">PROPAGATION_REQUIRED,readOnly,-BaseServiceException</prop>   
  73.                 <prop key="set*">PROPAGATION_REQUIRED,-BaseServiceException</prop>   
  74.                 <prop key="modify*">PROPAGATION_REQUIRED,-BaseServiceException</prop>   
  75.                 <prop key="remove*">PROPAGATION_REQUIRED,-BaseServiceException</prop>   
  76.             </props>   
  77.         </property>   
  78.     </bean>   
  79.   
  80.   
  81.     <!-- logon primary business object implementation -->   
  82.     <bean id="logonServiceSpring" class="common.spring.service.LogonServiceSpringImpl">   
  83.         <property name="baseDAO"><ref local="baseDAO"/></property>   
  84.     </bean>   
  85.   
  86.     <!--  logon SERVICE  -->   
  87.     <bean id="logonService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">   
  88.         <property name="transactionManager"><ref local="myTransactionManager"/></property>   
  89.         <property name="target"><ref local="logonServiceSpring"/></property>   
  90.         <property name="transactionAttributes">   
  91.             <props>   
  92.                 <prop key="get*">PROPAGATION_REQUIRED,readOnly,-BaseServiceException</prop>   
  93.                 <prop key="set*">PROPAGATION_REQUIRED,-BaseServiceException</prop>   
  94.                 <prop key="modify*">PROPAGATION_REQUIRED,-BaseServiceException</prop>   
  95.                 <prop key="remove*">PROPAGATION_REQUIRED,-BaseServiceException</prop>   
  96.             </props>   
  97.         </property>   
  98.     </bean>   
  99.   
  100. </beans>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值