Struts+Spring+Hibernate整合

数据库使用Mysql,数据库脚本:

 1create database if not exists `mydb`;
 2
 3USE `mydb`;
 4
 5/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
 6/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
 7
 8/*Table structure for table `card` */
 9
10DROP TABLE IF EXISTS `card`;
11
12CREATE TABLE `card` (
13  `id` int(11NOT NULL auto_increment,
14  `name` varchar(50default NULL,
15  `moneyint(11default NULL,
16  PRIMARY KEY  (`id`)
17) ENGINE=InnoDB DEFAULT CHARSET=utf8;
18
19/*Data for the table `card` */
20
21insert  into `card`(`id`,`name`,`money`) values (1,'tom',5000),(2,'jack',5000);
创建DAO接口,目的是可以以多种方式实现,比如jdbc和Hibernate两种实现方式:
 1package com.kay.db.dao.Interface;
 2
 3import java.util.List;
 4
 5import com.kay.db.po.Card;
 6
 7public interface CardDAO {
 8
 9    public void save(Card card);
10    public void delete(Card card);
11    public Card findById(Integer id);
12    public List findAll();
13    public void update(Card card);
14}

15
CardDaoImpl类实现Dao接口,并继承自org.springframework.orm.hibernate3.support.HibernateDaoSupport中的HibernateDaoSupport类,这样可以使用Spring中的HibernateTemplate:
 1 package com.kay.db.dao.impl;
 2 
 3 import java.util.List;
 4 
 5 import com.kay.db.dao.Interface.CardDAO;
 6 import com.kay.db.po.Card;
 7 import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
 8 
 9 public class CardDaoImpl  extends HibernateDaoSupport implements CardDAO {
10 
11     public void delete(Card card) {
12         getHibernateTemplate().delete(card);
13     }
14 
15     public List findAll() {
16         String hql = "FROM Card";
17         List list = getHibernateTemplate().find(hql);
18         return list;
19     }
20 
21     public Card findById(Integer id) {
22         Card card = (Card) getHibernateTemplate().get(Card.class, id);
23         return card;
24     }
25 
26     public void save(Card card) {
27         getHibernateTemplate().save(card);
28 
29     }
30 
31     public void update(Card card) {
32         getHibernateTemplate().update(card);
33 
34     }
35 
36 }
37 
在CardService中,封装业务实现,这个类继承了CardServiceFace类,CardServiceFace类中有CardDaoImpl类的属性,并生成get和set方法:
 1 package com.kay.biz.service.interfaces;
 2 
 3 import com.kay.db.dao.impl.CardDaoImpl;
 4 
 5 public class CardServiceFace {
 6 
 7     protected CardDaoImpl dao;
 8 
 9     public CardDaoImpl getDao() {
10         return dao;
11     }
12 
13     public void setDao(CardDaoImpl dao) {
14         this.dao = dao;
15     }
16 }
CardService类:
 1 package com.kay.biz.service;
 2 
 3 import com.kay.biz.service.interfaces.CardServiceFace;
 4 
 5 import com.kay.db.po.Card;
 6 
 7 public class CardService extends CardServiceFace{
 8     
 9     /**
10      * 转帐方法
11      * @param from 转出帐号
12      * @param to 转入帐号
13      * @param money 交易金额
14      */
15     public void tran(int from,int to ,int money){
16         Card fromcard  = dao.findById(from);
17         fromcard.setMoney(fromcard.getMoney() - money);
18         Card tocard = dao.findById(to);
19         tocard.setMoney(tocard.getMoney() + money);
20     }
21     
22 
23     
24 }
Action类:
 1package com.kay.struts.action;
 2
 3import javax.servlet.http.HttpServletRequest;
 4import javax.servlet.http.HttpServletResponse;
 5
 6import org.apache.struts.action.Action;
 7import org.apache.struts.action.ActionForm;
 8import org.apache.struts.action.ActionForward;
 9import org.apache.struts.action.ActionMapping;
10import org.springframework.web.struts.ContextLoaderPlugIn;
11
12import com.kay.biz.service.CardService;
13import com.kay.struts.form.TranForm;
14
15
16public class TranAction extends Action {
17    private CardService cs;
18    public ActionForward execute(ActionMapping mapping, ActionForm form,
19            HttpServletRequest request, HttpServletResponse response) {
20        
21        TranForm tf = (TranForm)form;
22        cs.tran(tf.getFrom(), tf.getTo(), tf.getMoney());
23    
24        return mapping.findForward("ok");
25    }

26    public CardService getCs() {
27        return cs;
28    }

29    public void setCs(CardService cs) {
30        this.cs = cs;
31    }

32}
配置文件:
Spring.xml:
  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 
  6 
  7     <!-- 数据源 -->
  8     <bean id="datasource"
  9         class="org.apache.commons.dbcp.BasicDataSource">
 10         <property name="driverClassName">
 11             <value>com.mysql.jdbc.Driver</value>
 12         </property>
 13         <property name="url">
 14             <value>jdbc:mysql://localhost:3306/mydb</value>
 15         </property>
 16         <property name="username">
 17             <value>root</value>
 18         </property>
 19         <property name="password">
 20             <value>root</value>
 21         </property>
 22     </bean>
 23 
 24     <!-- SessionFactory -->
 25     <bean id="sessionFactory"
 26         class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
 27         <property name="dataSource">
 28             <ref bean="datasource" />
 29         </property>
 30         <property name="configLocation">
 31             <value>/WEB-INF/hibernate.cfg.xml</value>
 32         </property>
 33         <property name="hibernateProperties">
 34             <props>
 35                 <prop key="hibernate.dialect">
 36                     org.hibernate.dialect.MySQLDialect
 37                 </prop>
 38             </props>
 39         </property>
 40     </bean>
 41 
 42     <!-- HibernateTemplate -->
 43     <bean id="hibernateTemplate"
 44         class="org.springframework.orm.hibernate3.HibernateTemplate">
 45         <property name="sessionFactory">
 46             <ref bean="sessionFactory" />
 47         </property>
 48     </bean>
 49 
 50     <!-- CardDAO -->
 51     <bean id="cardDao" class="com.kay.db.dao.impl.CardDaoImpl">
 52         <property name="hibernateTemplate">
 53             <ref bean="hibernateTemplate" />
 54         </property>
 55     </bean>
 56 
 57 
 58     <!-- CardService -->
 59     <bean id="CardService" class="com.kay.biz.service.CardService">
 60         <property name="dao">
 61             <ref bean="cardDao" />
 62         </property>
 63     </bean>
 64 
 65     <!-- Spring事物管理器 -->
 66     <bean id="transactionManager"
 67         class="org.springframework.orm.hibernate3.HibernateTransactionManager">
 68         <property name="sessionFactory">
 69             <ref bean="sessionFactory" />
 70         </property>
 71     </bean>
 72 
 73     <!-- Spring 事务切面 -->
 74     <bean id="cardServiceTm"
 75         class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
 76         <!-- 被代理类 -->
 77         <property name="target">
 78             <ref bean="CardService" />
 79         </property>
 80         <!-- Spring 事务管理器 -->
 81         <property name="transactionManager">
 82             <ref bean="transactionManager" />
 83         </property>
 84         <!-- 事务规则 -->
 85         <property name="transactionAttributes">
 86             <props>
 87                 <prop key="*">PROPAGATION_REQUIRED</prop>
 88             </props>
 89         </property>
 90     </bean>
 91 
 92 
 93     <!-- Action -->
 94     <bean name="/tran" class="com.kay.struts.action.TranAction">
 95         <property name="cs">
 96             <ref bean="cardServiceTm" />
 97         </property>
 98     </bean>
 99 </beans>
100 
Struts-congif.xml:
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
 3 
 4 <struts-config>
 5     <data-sources />
 6     <form-beans>
 7         <form-bean name="tranForm" type="com.kay.struts.form.TranForm" />
 8 
 9     </form-beans>
10 
11     <global-exceptions>
12         <exception key="hh" type="java.lang.RuntimeException"></exception>
13     </global-exceptions>
14     <global-forwards />
15     <action-mappings>
16         <action attribute="tranForm" name="tranForm" path="/tran"
17             scope="request" type="com.kay.struts.action.TranAction">
18             <forward name="ok" path="/index.jsp" />
19         </action>
20 
21 
22     </action-mappings>
23 
24     <controller
25         processorClass="org.springframework.web.struts.DelegatingRequestProcessor">
26     </controller>
27     
28     <message-resources parameter="com.kay.struts.ApplicationResources" />
29     
30     <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
31         <set-property property="contextConfigLocation" value="/WEB-INF/spring.xml" />
32     </plug-in>
33 </struts-config>
34 
35 
hibernate.cfg.xml:
 1 <?xml version='1.0' encoding='UTF-8'?>
 2 <!DOCTYPE hibernate-configuration PUBLIC
 3           "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 4           "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
 5 
 6 <!-- Generated by MyEclipse Hibernate Tools.                   -->
 7 <hibernate-configuration>
 8 
 9 <session-factory>
10     <property name="connection.username">root</property>
11     <property name="connection.url">jdbc:mysql://localhost:3306/mydb</property>
12     <property name="dialect">
13         org.hibernate.dialect.MySQLDialect
14     </property>
15     <property name="myeclipse.connection.profile">mysql</property>
16     <property name="connection.password">root</property>
17     <property name="connection.driver_class">
18         com.mysql.jdbc.Driver
19     </property>
20     <property name="show_sql">true</property>
21     <mapping resource="com/kay/db/po/Card.hbm.xml" />
22 
23 </session-factory>
24 
25 </hibernate-configuration>
posted @ 2007-05-19 15:46  樊凯  阅读(1188)  评论(0编辑  收藏  举报