spring(4)
JdbcTemplate
1JdbcTemplate是spring提供的操作對象,是對Jdbc API的簡單封裝
JdbcTemplate的使用
1 導入相關的jar包 2 在配置文件中配置數據源 3 在配置文件中將數據源注入到JdbcTemplate中 4 在操作類中獲取JdbcTemplate。JdbcTemplate.execute()JdbcTemplate.update()JdbcTemplate.query()Jdbc.queryForObject()存在的問題
我們的dao 有很多時,每個dao 都有一些重復性的代碼。下面就是重復代碼:
private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; }解決的方法(這種方式只適用于XML配置的情況,如果是注解配置還是得使用上一種方式)
讓dao 繼承JdbcDaoSupport
當然也需要給這個dao類注入一個數據源
Spring 中的事務控制
第一:JavaEE 體系進行分層開發,事務處理位于業務層,Spring 提供了分層設計業務層的事務處理解決方案。
第二:spring 框架為我們提供了一組事務控制的接口。具體在后面的第二小節介紹。這組接口是在spring-tx-5.0.2.RELEASE.jar 中。
第三:spring 的事務控制都是基于AOP 的,它既可以使用編程的方式實現,也可以使用配置的方式實現。我們學習的重點是使用配置的方式實現。
PlatformTransactionManager此接口是spring 的事務管理器。
包含三個具體操作:
獲取事物狀態信息:getTransaction()
提交:commit()
回滾:rollback()
主要是使用它的兩個實現類:
DataSourceTransactionManager(JdcTemplate和mybatis用)
HibernateTransactionManager (Hibernate 用)
TransactionDefinition:
隔離級別
傳播行為:REQUIRED(有就用,沒有就建),SUPPORTS(有就用,沒有就非事物運行)
是否只讀
超時時間
TransactionStatus:
刷新事物
是否存在存儲點
事物是否完成
事物是否為新事物
是否回滾
基于XML的聲明式配置
1 配置事物管理器(DataSourceTransactionManager),并給注入數據源 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <!-- 注入DataSource --> <property name="dataSource" ref="dataSource"></property> </bean> 2 配置事物的通知引用事物管理器 <!-- 事務的配置--> <tx:advice id="txAdvice" transaction-manager="transactionManager"> </tx:advice> 3 配置事物的屬性 <!--在tx:advice 標簽內部配置事務的屬性--> <tx:attributes> <!-- 指定方法名稱:是業務核心方法 read-only:是否是只讀事務。默認false,不只讀。 isolation:指定事務的隔離級別。默認值是使用數據庫的默認隔離級別。 propagation:指定事務的傳播行為。 timeout:指定超時時間。默認值為:-1。永不超時。 rollback-for:用于指定一個異常,當執行產生該異常時,事務回滾。產生其他異常,事務不回滾。 沒有默認值,任何異常都回滾。 no-rollback-for:用于指定一個異常,當產生該異常時,事務不回滾,產生其他異常時,事務回 滾。沒有默認值,任何異常都回滾。 --> <tx:method name="*" read-only="false" propagation="REQUIRED"/> <tx:method name="find*" read-only="true" propagation="SUPPORTS"/> </tx:attributes> 4 配置AOP切入點表達式 <!-- 配置aop --> <aop:config> <!-- 配置切入點表達式--> <aop:pointcut expression="execution(* com.itheima.service.impl.*.*(..))" id="pt1"/> </aop:config> 5 配置切入點表達式和事務通知的對應關系 <!-- 在aop:config 標簽內部:建立事務的通知和切入點表達式的關系--> <aop:advisor advice-ref="txAdvice" pointcut-ref="pt1"/>基于注解的配置方式
1 配置事務管理器并注入數據源 2 在業務層使用@Transactional 注解 @Transactional(readOnly=true,propagation=Propagation.SUPPORTS) 該注解的屬性和xml 中的屬性含義一致。該注解可以出現在接口上,類上和方法上。 出現接口上,表示該接口的所有實現類都有事務支持。 出現在類上,表示類中所有方法有事務支持 出現在方法上,表示方法有事務支持。 以上三個位置的優先級:方法>類>接口 3 在配置文件中開啟spring 對注解事務的支持 <!-- 開啟spring 對注解事務的支持--> <tx:annotation-driven transaction-manager="transactionManager"/>完全使用注解的方式:
在@Configuration標記的注解類上使用@EnableTransactionManagement注解總結
- 上一篇: 字体:Verdana
- 下一篇: 忘不了手机随身私密管家神器在手密码无忧!