论坛首页 入门技术论坛

声明式事务处理(转账示例)

浏览 1646 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-12-07  
vo层
java 代码
  1. package org.show;   
  2.   
  3.   
  4.   
  5. /**  
  6.  * Account generated by MyEclipse - Hibernate Tools  
  7.  */  
  8.   
  9. @SuppressWarnings("serial")   
  10. public class Account  implements java.io.Serializable {   
  11.   
  12.   
  13.     // Fields       
  14.   
  15.      private Integer accountid;   
  16.      private String accountname;   
  17.      private Integer money;   
  18.   
  19.   
  20.     // Constructors   
  21.   
  22.     /** default constructor */  
  23.     public Account() {   
  24.     }   
  25.   
  26.        
  27.     /** full constructor */  
  28.     public Account(String accountname, Integer money) {   
  29.         this.accountname = accountname;   
  30.         this.money = money;   
  31.     }   
  32.   
  33.       
  34.     // Property accessors   
  35.   
  36.     public Integer getAccountid() {   
  37.         return this.accountid;   
  38.     }   
  39.        
  40.     public void setAccountid(Integer accountid) {   
  41.         this.accountid = accountid;   
  42.     }   
  43.   
  44.     public String getAccountname() {   
  45.         return this.accountname;   
  46.     }   
  47.        
  48.     public void setAccountname(String accountname) {   
  49.         this.accountname = accountname;   
  50.     }   
  51.   
  52.     public Integer getMoney() {   
  53.         return this.money;   
  54.     }   
  55.        
  56.     public void setMoney(Integer money) {   
  57.         this.money = money;   
  58.     }   
  59.       
  60.   
  61. }  

DAO层

java 代码
  1. package org.show;   
  2.   
  3. import org.springframework.orm.hibernate3.support.HibernateDaoSupport;   
  4.   
  5. public class AccountDAO extends HibernateDaoSupport {   
  6.   
  7.     public void addMoney(Integer accountId,int money){   
  8.   
  9.         Account account = (Account)getHibernateTemplate().get(Account.class,accountId);   
  10.         account.setMoney(account.getMoney() + money);   
  11.         getHibernateTemplate().saveOrUpdate(account);   
  12.     }   
  13.   
  14.     public void subMoney(Integer accountId,int money){   
  15.   
  16.         Account account = (Account)getHibernateTemplate().get(Account.class,accountId);   
  17.         account.setMoney(account.getMoney() - money);   
  18.         getHibernateTemplate().saveOrUpdate(account);   
  19.     }   
  20. }  
Service层
java 代码
  1. package org.show;   
  2.   
  3. public class AccountService {   
  4.   
  5.     private AccountDAO accountDAO;   
  6.     public void setAccountDAO(AccountDAO _accountDAO){   
  7.            
  8.         accountDAO = _accountDAO;   
  9.     }   
  10.     public void transfer(Integer fromAccountId, Integer toAccountId,int money){   
  11.            
  12.         accountDAO.subMoney(fromAccountId, money);   
  13.         accountDAO.addMoney(toAccountId, money);   
  14.     }   
  15. }   

测试方法

java 代码

  1. package org.show;   
  2.   
  3. import org.springframework.context.ApplicationContext;   
  4. import org.springframework.context.support.FileSystemXmlApplicationContext;   
  5.   
  6. public class Main {   
  7.   
  8.     /**  
  9.      * @param args  
  10.      */  
  11.     public static void main(String[] args) {   
  12.            
  13.         ApplicationContext act = new FileSystemXmlApplicationContext("src/applicationContext.xml");   
  14.         AccountService accountService = (AccountService)act.getBean("accountService");   
  15.         try{   
  16.                
  17.             accountService.transfer(121);   
  18.                
  19.         }catch(Exception e){   
  20.                
  21.             System.out.println("转帐失败!");   
  22.         }   
  23.     }   
  24.   
  25. }   

Account.hbm.xml映射文件

xml 代码
  1. <!---->xml version="1.0"?>  
  2. <!---->
  3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  4. <!---->  
  5. <hibernate-mapping>  
  6.     <class name="org.show.Account" table="account"  >  
  7.         <id name="accountid" type="java.lang.Integer">  
  8.             <column name="accountid" />  
  9.             <generator class="native" />  
  10.         id>  
  11.         <property name="accountname" type="java.lang.String">  
  12.             <column name="accountname" length="20" not-null="true" />  
  13.         property>  
  14.         <property name="money" type="java.lang.Integer">  
  15.             <column name="money" not-null="true" />  
  16.         property>  
  17.     class>  
  18. hibernate-mapping>  

 

xml 代码
  1. <!---->xml version="1.0" encoding="UTF-8"?>  
  2. <!---->>  
  3.   
  4. <beans>  
  5. <!---->  
  6.     <bean id="dataSource"  
  7.         class="org.apache.commons.dbcp.BasicDataSource">  
  8.         <!---->  
  9.         <property name="driverClassName">  
  10.             <value>com.mysql.jdbc.Drivervalue>  
  11.         property>  
  12.         <!---->  
  13.         <property name="url">  
  14.             <value>jdbc:mysql://localhost:3306/thjvalue>  
  15.         property>  
  16.         <!---->  
  17.         <property name="username">  
  18.             <value>rootvalue>  
  19.         property>  
  20.         <!---->  
  21.         <property name="password">  
  22.             <value>1234value>  
  23.         property>  
  24.     bean>  
  25.     <!---->  
  26.     <bean id="sessionFactory"  
  27.         class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  28.         <!---->  
  29.         <property name="dataSource">  
  30.             <ref bean="dataSource" />  
  31.         property>  
  32.         <property name="hibernateProperties">  
  33.             <props>  
  34.                 <prop key="hibernate.dialect">  
  35.                     org.hibernate.dialect.MySQLDialect   
  36.                 prop>  
  37.                 <prop key="hibernate.show_sql">trueprop>  
  38.             props>  
  39.         property>  
  40.         <property name="mappingResources">  
  41.             <list>  
  42.                 <value>org/show/Account.hbm.xmlvalue>  
  43.             list>  
  44.         property>  
  45.     bean>  
  46.     <!---->  
  47.     <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">  
  48.     <!---->  
  49.         <property name="sessionFactory" ref="sessionFactory">property>  
  50.     bean>  
  51.   
  52.     <bean id="accountDAO" class="org.show.AccountDAO">  
  53.         <property name="sessionFactory" ref="sessionFactory">property>  
  54.     bean>   Spring配置文件
  55.     <!---->  
  56.     <bean id="accountService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">  
  57.         <!---->  
  58.         <property name="transactionManager" ref="transactionManager">property>  
  59.         <!---->  
  60.         <property name="target">  
  61.             <!---->  
  62.             <bean class="org.show.AccountService">  
  63.                 <property name="accountDAO" ref="accountDAO">property>  
  64.             bean>  
  65.         property>  
  66.         <!---->  
  67.         <property name="transactionAttributes">  
  68.             <props>  
  69.                 <!---->  
  70.                 <prop key="transfer">PROPAGATION_REQUIREDprop>  
  71.             props>  
  72.         property>  
  73.     bean>  
  74. beans>  
论坛首页 入门技术版

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