SSH组合方案四:Hibernate.cfg.xml由Spring管理,用到事务,事务在DAO层

在SSH组合方案三的基础上修改为SSH组合方案四

SSH组合方案四:Hibernate.cfg.xml由Spring管理,用到事务,事务在DAO层

***说明:SSH组合方案四就在SSH组合方案三上加了一层,业务逻辑层:com.mengya.service层
其实,我们以前的做法在action中完成了业务逻辑操作.在action中直接调用dao层,
这样action即作为控制器也作为业务逻辑,如在删除操作中,action先要判断有没有外键约束再做删除.
现在action中的删除只调用业务逻辑层com.mengya.service层里的删除方法即可.由业务逻辑层做有没有外键约束检查

1,应先写好包
com.mengya.entity:实本包
com.mengya.dao:DAO接口包
com.mengya.dao.imple实体包
com.mengya.service:业务逻辑接口包
com.mengya.service.imple:业务逻辑实现包
com.megnya.util:uitl包

2,加上Spring支持

3,加上Struts支持

4,加上Hibernate支持

5,由Hibernate创建entity类和DAO
可以在dao中重载一下delete方法,由ID删除对象
由产生的DAO抽出接口来分别把它们分到com.megnya.dao与com.mengya.dao.imple包中

6,从DAO层中抽出可能用到的方法作为接为业务逻辑层的接口,在业务逻辑层实现层调用DAO实现它接口

7,加入Struts中的Action与ActionForm

8,修改struts-config.xml中的action的type值为:org.springframework.web.struts.DelegatingActionProxy作为代理
在struts-config.xml中加上
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
   <set-property property="contextConfigLocation" value="classpath*:applicationContext.xml"/>
   </plug-in>

9,在actionForm中封装BO,在action中写上方法
   在action中就直接调用service层就可以了,而不是调用dao

10,在Spring的applicationContext.xml中配置上action和service

11,发布出错,少了一个包 commons-pool-1.3.jar

12,没有处理gbk问题,在web.xml中可以加在Spring帮我们写好的filter


13,在Spring的applicationContext.xml中配置

<!-- 配置数据源 -->
<bean id="myds" class="org.apache.commons.dbcp.BasicDataSource">
   <property name="driverClassName"
    value="com.microsoft.sqlserver.jdbc.SQLServerDriver">
   </property>
   <property name="url"
    value="jdbc:sqlserver://localhost:1433;databaseName=mp">
   </property>
   <property name="username" value="sa"></property>
   <property name="password" value="mengya"></property>
</bean>

<!-- 配置sessionFactory -->
<bean id="sessionFactory"
   class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
   <property name="dataSource">
    <ref bean="myds" />
   </property>
   <property name="hibernateProperties">
    <props>
     <prop key="hibernate.dialect">
      org.hibernate.dialect.SQLServerDialect
     </prop>
    </props>
   </property>
   <property name="mappingResources">
    <list>
     <value>com/mengya/entity/Student.hbm.xml</value>
    </list>
   </property>
</bean>
<!-- 配置事务管理器 -->
<bean id="transacitonManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
   <property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 配置抽象事务代理,这个bean可以被多个对象继承 -->
<bean id="abstractTranProxy" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
   <property name="transactionManager" ref="transacitonManager" />
   <property name="transactionAttributes">
    <props>
     <prop key="save*">PROPAGATION_REQUIRED</prop>
     <prop key="delete*">PROPAGATION_REQUIRED</prop>
     <prop key="merge*">PROPAGATION_REQUIRED</prop>
     <prop key="*">readOnly</prop>
    </props>
   </property>
</bean>

<!-- 这里的DAO是目标对象 -->
<bean id="StudentDAO" class="com.mengya.dao.imple.StudentDAO">
   <property name="sessionFactory">
    <ref bean="sessionFactory" />
   </property>
</bean>

<!-- 代理DAO -->
<bean id="StudentDAOProxy" parent="abstractTranProxy">
   <property name="target" ref="StudentDAO"/>
</bean>

<!-- 配置service 将dao注入service中 -->
<bean id="stuservice" class="com.mengya.service.imple.Stuserviceimple">
   <property name="studao" ref="StudentDAOProxy" />
</bean>

<!-- action中指向代理对象 -->
<bean name="/stu" class="com.mengya.struts.action.StuAction">
   <property name="stuservice" ref="stuservice" />
</bean>

OK....

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值