<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd">
<description>Quick DAO Start for Spring</description>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!--programming transaction-->
<bean id="tsService" class="com.transaction.SaveWithTs">
<property name="hibernateTemplate" ref="hibernateTemplate"></property>
<property name="transactionTemplate">
<bean class="org.springframework.transaction.support.TransactionTemplate">
<property name="transactionManager" ref="transactionManager">
</property>
</bean>
</property>
</bean>
<!--declaring transaction-->
<bean id="tsProxyService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="target" ref="tsProxyTransactionImpl"></property>
<property name="proxyInterfaces" value="com.transaction.TsProxyTransaction"></property>
<property name="transactionManager" ref="transactionManager"></property>
<property name="transactionAttributes">
<props>
<prop key="add*">PROPAGATION_REQUIRED</prop>
<!-- <prop key="*">PROPAGATION_SUPPORTS</prop>-->
</props>
</property>
</bean>
<bean id="tsProxyTransactionImpl" class="com.transaction.TsProxyTransactionImpl">
<!-- <property name="hibernateTemplate" ref="hibernateTemplate"></property>-->
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="mappingResources">
<list>
<value>com/dao/Area.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
</props>
</property>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"></property>
<property name="username" value="jil"></property>
<property name="password" value="jil"></property>
</bean>
</beans>
<!--programming transaction class testing-->
package com.transaction;
import org.hibernate.HibernateException;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.TransactionCallback;
import org.springframework.transaction.support.TransactionTemplate;
import com.dao.Area;
public class SaveWithTs implements TransactionCallback {
private TransactionTemplate transactionTemplate;
private HibernateTemplate hibernateTemplate;
public Object doInTransaction(TransactionStatus ts) {
// TODO Auto-generated method stub
return null;
}
public void saveWithTs(){
transactionTemplate.execute(new TransactionCallback(){
public Object doInTransaction(TransactionStatus ts) {
// TODO Auto-generated method stub
try{
Area area = new Area();
area.setAreaname("tanglei");
area.setAreadetail("tanglei");
area.setPid(new Long(10000));
area.setAreaid(new Long(10000));
area.setAreanum(new Long(10000));
//jdbcTemplate.execute("insert into Area values(1000,'hehe','haha',100,100)");
hibernateTemplate.save(area);
int j=1/0;
} catch (HibernateException e) {
ts.isRollbackOnly();
}
return null;
}
});
}
public void setTransactionTemplate(TransactionTemplate transactionTemplate) {
this.transactionTemplate = transactionTemplate;
}
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
}
<!--declaring transaction class testing-->
package com.transaction;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.dao.Area;
public class TsProxyTransactionImpl extends HibernateDaoSupport implements TsProxyTransaction {
public void addArea() {
// TODO Auto-generated method stub
Area area = new Area();
area.setAreaname("tanglei");
area.setAreadetail("tanglei");
area.setPid(new Long(10000));
area.setAreaid(new Long(10000));
area.setAreanum(new Long(10000));
//hibernateTemplate.save(area);
getHibernateTemplate().save(area);
//int j=1/0;
}
public void saveArea() {
// TODO Auto-generated method stub
Area area = new Area();
area.setAreaname("tanglei");
area.setAreadetail("tanglei");
area.setPid(new Long(10000));
area.setAreaid(new Long(10000));
area.setAreanum(new Long(10000));
getHibernateTemplate().save(area);
int j=1/0;
}
}
本文介绍了一个使用Spring框架进行事务管理的实例,包括编程式事务管理和声明式事务管理两种方式,并展示了具体的实现代码。
1314

被折叠的 条评论
为什么被折叠?



