《Spring》------声明式事务处理
来源:互联网 发布:那个新闻软件最好 编辑:程序博客网 时间:2024/06/03 05:07
- 前言
提到对数据库的CRUD操作就想到了事务,在之前做过的项目中操作事务时,用到的是Spring框架,Spring的声明式事务处理将,操作起来相对于JDBC来说,简单了很多,其目的是让程序员不再关注事务。
操作步骤
创建持久化类和映射文件
创建hibernate.cfg.xml,person.class、person.hbm.xml 代码小编省略
写spring的配置文件,引入sessionFactory
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-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"> <!--JDBC文件配置--><bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <value>classpath:jdbc.properties</value> </property></bean> <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${jdbc.driverClassName}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </bean> <!--引入SessionFactory--> <bean id="sessionFactory2" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 映射文件所在的路径 --> <property name="mappingDirectoryLocations"> <list> <!-- spring容器会去该包及子包下搜索所有的映射文件 --> <value>com/dmsd/spring/domain</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> </props> </property> </bean> <!-- 创建 事物的管理器 其作用就是告诉Spring容器使用的是什么事物管理技术 1.HiberanteTransactionManager 2.DataSourceTransactionManager 3.JdoTransactionManager --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref bean="sessionFactory2" /> </property> </bean> <!-- 事物的声明 1、告诉Spring容器事物管理器 2.告诉Spring容器什么样的目标方法采用什么样的事物策略 --> <tx:advice transaction-manager="transactionManager" id="tx"> <tx:attributes> <!-- name:目标方法的范围 isolation:事物的隔离机制 propagation:传播属性,解决事物的嵌套问题 read-only:true(只读事物) false(读写事物) --> <tx:method name="save*" isolation="DEFAULT" propagation="REQUIRED" read-only="false" /> </tx:attributes> </tx:advice> <aop:config> <aop:pointcut expression="execution(* com.dmsd.spring.service.impl.*.*(..))" id="perform" /> <aop:advisor advice-ref="tx" pointcut-ref="perform" /> </aop:config> <!--编写personService和personDao的bean--> <bean id="personService" class="com.dmsd.spring.service.impl.PersonServiceImpl"> <property name="personDao"> <ref bean="personDao" /> </property> </bean> <bean id="personDao" class="com.dmsd.spring.dao.impl.PersonDaoImpl"> <property name="sessionFactory"> <ref bean="sessionFactory2" /> </property> </bean></beans>
Persondao
public interface PersonDao { public void savePerson(Person person);}
PersonDaoImpl
public class PersonDaoImpl extends HibernateDaoSupport implements PersonDao { public void savePerson(Person person) { this.getHibernateTemplate().save(person); }}
PersonService
public interface PersonService { public void savePerson(Person person);}
PersonServiceImpl
public class PersonServiceImpl implements PersonService { private PersonDao personDao; public PersonDao getPersonDao() { return personDao; } public void setPersonDao(PersonDao personDao) { this.personDao = personDao; } public void savePerson(Person person) { this.personDao.savePerson(person); }}
测试类
@Test public void testSavePerson(){ ApplicationContext context= new ClassPathXmlApplicationContext("applicationContext.xml"); PersonService personService =(PersonService) context.getBean("personService"); Person person=new Person(); person.setDescription("这是谁的媳妇儿????"); person.setName("王二狗"); personService.savePerson(person); }
小结
- Spring的声明式事务处理配置在项目中的应用大概就这几个步骤,其中主要的配置都在Spring的配置文件中了,在引入SessionFactory的时候,要配置好DataSource,然后声明事务管理器,声明事务策略,配置AOP切面,这样,一条线就下来了。
1 0
- Spring 声明式事务处理
- spring 声明式事务处理
- 《Spring》------声明式事务处理
- Spring声明式事务处理
- Spring的事务处理之声明式事务处理
- Spring 的声明式事务处理
- Spring声明式事务处理理解
- Spring的声明式事务处理
- Spring——声明式的事务处理
- spring声明式事务处理(hibernate)
- Spring源代码解析(六):Spring声明式事务处理
- Spring源代码解析(六):Spring声明式事务处理
- Spring源代码解析(六):Spring声明式事务处理
- Spring学习心得(23)-- spring声明式事务处理(hibernate)
- Spring+Hibernate延迟和声明式事务处理最终解决方案
- Spring+Hibernate延迟和声明式事务处理最终解决方案
- 【Spring七】JDBC编程之声明式事务处理
- Spring学习之声明式事务处理实例(DriverManagerDataSource注入)
- Android传输数据时加密详解
- js 添加 移除 替换 插入
- JavaServlet
- 编程语言进阶之道
- sublime text快捷键
- 《Spring》------声明式事务处理
- MySql学习 日记 - 第二篇 查询
- 给定一个double类型的浮点数m和int类型的整数n,求m的n次方
- 【Java】Java程序的运行过程
- 学习分享Android的MVP开发模式
- 为您解惑:HTML5中使用MathML数学公式的简单讲解..........
- 在Zend Studio中为ThinkPHP添加代码自动提示功能
- PHP文件路径解析
- 51nod 1455 宝石猎人