Spring學習_day03_事務

本文爲博主辛苦總結,但願本身之後返回來看的時候理解更深入,也但願能夠起到幫助初學者的做用.

轉載請註明 出自 : luogg的博客園 謝謝配合!

Spring_day03

一.事務

1.1 事務

事務:是邏輯上的一組操做,要麼所有成功,要麼所有失敗spring

事務特性 :數據庫

  • ACID:
  • 原子性: 事務不可分隔
  • 一致性: 事務執行的先後,數據完整性保持一致.
  • 隔離性: 一個事務執行的時候,不該該收到其餘事務的干擾
  • 持久性: 一旦結束,數據永久的保存到數據庫

1.2 spring的事務管理

分層開發: 事務處於service層編程

Spring的事務管理分紅兩類:app

  • 編程式事務管理:
  • 手動編寫代碼完成事務管理.
  • 聲明式事務管理:
  • 不須要手動編寫代碼,配置

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中寫的,好比事務管理,鏈接池的配置.測試

註解總結 :url

  • @Component("")
  • @Service("") 裝配Bean,標示爲service類
  • @Repository("") 裝配Bean,標示爲dao類
  • @Controller("") 裝配Bean,標示爲controller類
  • 去掃描註解 裝配的Bean
    <context:component-scan base-package="com.luogg.demo1"></context:component-scan>spa

  • @Autowired @Qualifier("userDao"): 在類中注入Bean
  • @Aspect 定義切面
  • @Before("execution(* com.luogg.demo1.UserDao.*(..))") 前置加強
  • 開啓自動生成代理
    <aop:aspectj-autoproxy/>代理

  • @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:applicationContext.xml")
    單元測試註解code

  • @Transactional 聲明事務

相關文章
相關標籤/搜索