Spring的事务操作 XML



applicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:aop="http://www.springframework.org/schema/aop" 
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:tx="http://www.springframework.org/schema/tx"
	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">


	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver">
		</property>
		<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl">
		</property>
		<property name="username" value="scott"></property>
		<property name="password" value="tiger"></property>
	</bean>
	
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.Oracle9Dialect
				</prop>
				<prop key="hibernate.show_sql">true</prop>
			</props>
		</property>
		<property name="mappingResources">
			<list>
				<value>com/bean/student.hbm.xml</value>
			</list>
		</property>
	</bean>
	
	<bean id="stuDao" class="com.idao.StudentDaoImpl">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	<bean id="stuService" class="com.service.Service">
		<property name="studao" ref="stuDao"></property>
	</bean>
	
	
	<bean id="txManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>
	
	<!-- 定义aop设置 -->
	<aop:config>
		<!-- 定义了一个切入点 负责拦截所有需要进行事务操作的方法 -->
		<aop:pointcut expression="execution(* com.service.*.save*(..))"
			id="stuServices" />
		<!-- 建议:在哪些方法上用什么样的事务操作,参考哪一个切入点 -->
		<aop:advisor advice-ref="txAdvice" pointcut-ref="stuServices" />
	</aop:config>
	
	<!-- 起码至少有两个方法进行update/save/delete -->
	<tx:advice id="txAdvice" transaction-manager="txManager">
		<tx:attributes>
			<!-- all methods starting with 'get' are read-only -->
			<tx:method name="get*" read-only="true" />
			<!-- propagation="REQUIRED" 如果当值执行的方法有事务操作,使用当前第事务,没有则创建一个  -->
			<tx:method name="save*" read-only="false" propagation="REQUIRED"/>
			<!-- other methods use the default transaction settings (see below) -->
			<tx:method name="*" />
		</tx:attributes>
	</tx:advice>
</beans>


StudentDaoImpl:

package com.idao;

import java.io.Serializable;

import javax.annotation.Resource;

import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Component;

import com.bean.Student;

public class StudentDaoImpl implements IStudentDao {
	private HibernateTemplate ht;

	public HibernateTemplate getHt() {
		return ht;
	}

	public void setSessionFactory(SessionFactory sessionFactory) {
		ht = new HibernateTemplate(sessionFactory);
	}

	@Override
	public void save(Student stu) {
		// TODO Auto-generated method stub
		ht.save(stu);
		throw new RuntimeException("事务操作");
	}

	@Override
	public void delete(Serializable id) {
		// TODO Auto-generated method stub
		Student stu = (Student) ht.get(Student.class, id);
		if (stu != null) {
			ht.delete(stu);
		}
	}

}

Service:

package com.service;

import javax.annotation.Resource;

import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import com.bean.Student;
import com.idao.IStudentDao;

public class Service {
	private IStudentDao studao;

	public IStudentDao getStudao() {
		return studao;
	}

	public void setStudao(IStudentDao studao) {
		this.studao = studao;
	}

	public void saveStudent() {

		Student stu1 = new Student();
		stu1.setSname("zsddddd");
		stu1.setDescription("dddddsssss");
		studao.save(stu1);
		studao.delete(22);

	}

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值