五、Spring 持久層
對于不同的數據庫技術,某些步驟是固定的,只有少部分不同。Spring運用Template Method模式,將固定的流程編寫與Temp類(JdbcTemplate、HibernateTemplate)之中,對不同的一些細節步驟,依托特定DAO支持對象來處理。
Spring的DAO框架并不拋出與數據庫技術相關的異常,Spring所有異常都是DataAccessException的子類,一個與數據庫技術無關的通用異常類,該類繼承至RuntimeException。
對于Jdbc存取,Spring將SQLException等轉化為自己的DAO異常對象。
DataSource注入
對于不同的數據庫鏈接來源需求,Spring提供了javax.sql.DataSource注入,更換數據來源只需在Bean定義文件中修改配置,不需修改程序代碼。 例如可以在Bean文件中編寫如下:
要建立JdbcTemplate的實例,
使用JdbcTemplate
JdbcTemplate封裝了Connection的取得,Statement的建立,異常的處理,Statement的關閉,Connection的關閉等。它被設計為線程安全的。
要建立JdbcTemplate的實例,必須要有一個DataSource對象作為構造對象。
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
Spring事務管理
Spring提供編程式事務管理與聲明式事務管理。
編程式事務管理
Spring提供了兩種方式實現編程式事務管理:使用PlatformTransactionManager實現;使用org.springframework.transaction.support.TransactionTemplate。
PlatformTransactionManager接口定義如下:
DataSourceTransactionManager是其一個實現類。
修改添加新用戶的代碼段作為示例:
另一個編程式事務管理方法是使用TransactionTemplate,它需要一個TransactionManager實例,如下:
聲明式事務管理
Spring的聲明式事務管理依賴于它的AOP框架來完成,使用聲明式的事務管理的好處是,事務管理不侵入開發的組件。
定義文件如下:
Powered by: BlogJava Copyright © codingliyi