zoukankan      html  css  js  c++  java
  • Spring学习_day03_事务

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用.

    转载请注明 出自 : luogg的博客园 谢谢配合!

    Spring_day03

    一.事务

    1.1 事务

    事务:是逻辑上的一组操作,要么全部成功,要么全部失败

    事务特性 :

    • ACID:
    • 原子性: 事务不可分隔
    • 一致性: 事务执行的前后,数据完整性保持一致.
    • 隔离性: 一个事务执行的时候,不应该收到其他事务的干扰
    • 持久性: 一旦结束,数据永久的保存到数据库

    1.2 spring的事务管理

    分层开发: 事务处于service层

    Spring的事务管理分成两类:

    • 编程式事务管理:
    • 手动编写代码完成事务管理.
    • 声明式事务管理:
    • 不需要手动编写代码,配置

    1.3基于注解的事务管理

    1.先配置xml
    <!-- 引入外部属性文件. -->
    	<context:property-placeholder location="classpath:jdbc.properties"/>
    	
    	<!-- 配置c3p0连接池 -->
    	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    		<property name="driverClass" value="${jdbc.driver}"/>
    		<property name="jdbcUrl" value="${jdbc.url}"/>
    		<property name="user" value="${jdbc.user}"/>
    		<property name="password" value="${jdbc.password}"/>
    	</bean>
    	
    	<!-- 业务层类 -->
    	<bean id="accountService" class="cn.itcast.spring3.demo4.AccountServiceImpl">
    		<!-- 在业务层注入Dao -->
    		<property name="accountDao" ref="accountDao"/>
    	</bean>
    	
    	<!-- 持久层类 -->
    	<bean id="accountDao" class="cn.itcast.spring3.demo4.AccountDaoImpl">
    		<!-- 注入连接池的对象,通过连接池对象创建模板. -->
    		<property name="dataSource" ref="dataSource"/>
    	</bean>
    	
    	<!-- 事务管理器 -->
    	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    		<property name="dataSource" ref="dataSource"/>
    	</bean>
    	
    	<!-- 开启注解的事务管理 -->
    	<tx:annotation-driven/>
    
    2.在需要使用注解的方法前边加上注解

    @Transactional

    3.测试

    注解开发

    全部使用注解很方便, 但是有些东西还是需要在xml中写的,比如事务管理,连接池的配置.

    注解总结 :

    • @Component("")

    • @Service("") 装配Bean,标示为service类

    • @Repository("") 装配Bean,标示为dao类

    • @Controller("") 装配Bean,标示为controller类

    • 去扫描注解 装配的Bean
      <context:component-scan base-package="com.luogg.demo1"></context:component-scan>

    • @Autowired @Qualifier("userDao"): 在类中注入Bean

    • @Aspect 定义切面

    • @Before("execution(* com.luogg.demo1.UserDao.*(..))") 前置增强

    • 开启自动生成代理
      <aop:aspectj-autoproxy/>

    • @RunWith(SpringJUnit4ClassRunner.class)
      @ContextConfiguration("classpath:applicationContext.xml")
      单元测试注解

    • @Transactional 声明事务

  • 相关阅读:
    OpenCV -- VideoWriter
    Opencv -- 显示创建Mat对象的七种方式
    OpenCV -- Video Capture
    OpenCV -- Mat类详解
    OpenCV -- .at<uchar>(j, i) 和.at<uchar>(Point(j, i)) 的区别
    OpenCV -- 图像遍历的四种方式(at、指针、isCountinuous、迭代器)、在Vector尾部加数据函数push_back()
    css实现上传按钮
    理解原型对象
    margin 0 auto 元素元素并未居中的原因!
    css中的布局
  • 原文地址:https://www.cnblogs.com/luogg/p/6794892.html
Copyright © 2011-2022 走看看