Spring資料訪問
解釋物件/關係對映整合模組
在Spring框架中如何更有效地使用JDBC?
解釋JDBC抽象和DAO模組
spring DAO 有什麼用?
spring JDBC API 中存在哪些類?
JdbcTemplate是什麼
使用Spring通過什麼方式訪問Hibernate?使用 Spring 訪問 Hibernate 的方法有哪些?
如何通過HibernateDaoSupport將Spring和Hibernate結合起來?
Spring支援的事務管理型別, spring 事務實現方式有哪些?
Spring事務的實現方式和實現原理
說一下Spring的事務傳播行為
說一下 spring 的事務隔離?
Spring框架的事務管理有哪些優點?
你更傾向用那種事務管理型別?
解釋物件/關係對映整合模組
Spring 通過提供ORM模組,支援我們在直接JDBC之上使用一個物件/關係對映對映(ORM)工具,Spring 支援整合主流的ORM框架,如Hiberate,JDO和 iBATIS,JPA,TopLink,JDO,OJB 。Spring的事務管理同樣支援以上所有ORM框架及JDBC。
在Spring框架中如何更有效地使用JDBC?
使用Spring JDBC 框架,資源管理和錯誤處理的代價都會被減輕。所以開發者只需寫statements 和 queries從資料存取資料,JDBC也可以在Spring框架提供的模板類的幫助下更有效地被使用,這個模板叫JdbcTemplate
解釋JDBC抽象和DAO模組
通過使用JDBC抽象和DAO模組,保證資料庫程式碼的簡潔,並能避免資料庫資源錯誤關閉導致的問題,它在各種不同的資料庫的錯誤資訊之上,提供了一個統一的異常訪問層。它還利用Spring的AOP 模組給Spring應用中的物件提供事務管理服務。
spring DAO 有什麼用?
Spring DAO(資料訪問物件) 使得 JDBC,Hibernate 或 JDO 這樣的資料訪問技術更容易以一種統一的方式工作。這使得使用者容易在永續性技術之間切換。它還允許您在編寫程式碼時,無需考慮捕獲每種技術不同的異常。
spring JDBC API 中存在哪些類?
JdbcTemplate
SimpleJdbcTemplate
NamedParameterJdbcTemplate
SimpleJdbcInsert
SimpleJdbcCall
JdbcTemplate是什麼
JdbcTemplate 類提供了很多便利的方法解決諸如把資料庫資料轉變成基本資料型別或物件,執行寫好的或可呼叫的資料庫操作語句,提供自定義的資料錯誤處理。
使用Spring通過什麼方式訪問Hibernate?使用 Spring 訪問 Hibernate 的方法有哪些?
在Spring中有兩種方式訪問Hibernate:
使用 Hibernate 模板和回撥進行控制反轉
擴充套件 HibernateDAOSupport 並應用 AOP 攔截器節點
如何通過HibernateDaoSupport將Spring和Hibernate結合起來?
用Spring的 SessionFactory 呼叫 LocalSessionFactory。整合過程分三步:
配置the Hibernate SessionFactory
繼承HibernateDaoSupport實現一個DAO
在AOP支援的事務中裝配
Spring支援的事務管理型別, spring 事務實現方式有哪些?
Spring支援兩種型別的事務管理:
程式設計式事務管理:這意味你通過程式設計的方式管理事務,給你帶來極大的靈活性,但是難維護。
宣告式事務管理:這意味著你可以將業務程式碼和事務管理分離,你只需用註解和XML配置來管理事務。
Spring事務的實現方式和實現原理
Spring事務的本質其實就是資料庫對事務的支援,沒有資料庫的事務支援,spring是無法提供事務功能的。真正的資料庫層的事務提交和回滾是通過binlog或者redo log實現的。
說一下Spring的事務傳播行為
spring事務的傳播行為說的是,當多個事務同時存在的時候,spring如何處理這些事務的行為。
① PROPAGATION_REQUIRED:如果當前沒有事務,就建立一個新事務,如果當前存在事務,就加入該事務,該設定是最常用的設定。
② PROPAGATION_SUPPORTS:支援當前事務,如果當前存在事務,就加入該事務,如果當前不存在事務,就以非事務執行。
③ PROPAGATION_MANDATORY:支援當前事務,如果當前存在事務,就加入該事務,如果當前不存在事務,就丟擲異常。
④ PROPAGATION_REQUIRES_NEW:建立新事務,無論當前存不存在事務,都建立新事務。
⑤ PROPAGATION_NOT_SUPPORTED:以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。
⑥ PROPAGATION_NEVER:以非事務方式執行,如果當前存在事務,則丟擲異常。
⑦ PROPAGATION_NESTED:如果當前存在事務,則在巢狀事務內執行。如果當前沒有事務,則按REQUIRED屬性執行。
說一下 spring 的事務隔離?
spring 有五大隔離級別,預設值為 ISOLATION_DEFAULT(使用資料庫的設定),其他四個隔離級別和資料庫的隔離級別一致:
ISOLATION_DEFAULT:用底層資料庫的設定隔離級別,資料庫設定的是什麼我就用什麼;
ISOLATION_READ_UNCOMMITTED:未提交讀,最低隔離級別、事務未提交前,就可被其他事務讀取(會出現幻讀、髒讀、不可重複讀);
ISOLATION_READ_COMMITTED:提交讀,一個事務提交後才能被其他事務讀取到(會造成幻讀、不可重複讀),SQL server 的預設級別;
ISOLATION_REPEATABLE_READ:可重複讀,保證多次讀取同一個資料時,其值都和事務開始時候的內容是一致,禁止讀取到別的事務未提交的資料(會造成幻讀),MySQL 的預設級別;
ISOLATION_SERIALIZABLE:序列化,代價最高最可靠的隔離級別,該隔離級別能防止髒讀、不可重複讀、幻讀。
髒讀 :表示一個事務能夠讀取另一個事務中還未提交的資料。比如,某個事務嘗試插入記錄 A,此時該事務還未提交,然後另一個事務嘗試讀取到了記錄 A。
不可重複讀 :是指在一個事務內,多次讀同一資料。
幻讀 :指同一個事務內多次查詢返回的結果集不一樣。比如同一個事務 A 第一次查詢時候有 n 條記錄,但是第二次同等條件下查詢卻有 n+1 條記錄,這就好像產生了幻覺。發生幻讀的原因也是另外一個事務新增或者刪除或者修改了第一個事務結果集裡面的資料,同一個記錄的資料內容被修改了,所有資料行的記錄就變多或者變少了。
Spring框架的事務管理有哪些優點?
為不同的事務API 如 JTA,JDBC,Hibernate,JPA 和JDO,提供一個不變的程式設計模式。
為程式設計式事務管理提供了一套簡單的API而不是一些複雜的事務API
支援宣告式事務管理。
和Spring各種資料訪問抽象層很好得整合。
你更傾向用那種事務管理型別?
大多數Spring框架的使用者選擇宣告式事務管理,因為它對應用程式碼的影響最小,因此更符合一個無侵入的輕量級容器的思想。宣告式事務管理要優於程式設計式事務管理,雖然比程式設計式事務管理(這種方式允許你通過程式碼控制事務)少了一點靈活性。唯一不足地方是,最細粒度只能作用到方法級別,無法做到像程式設計式事務那樣可以作用到程式碼塊級別。
不要以為每天把功能完成了就行了,這種思想是要不得的,互勉~!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69989885/viewspace-2741631/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- spring boot(四)資料訪問模組Spring Boot
- spring mvc 的jpa JpaRepository資料層訪問SpringMVC
- Spring Boot入坑-5-資料訪問Spring Boot
- Spring Boot實現資料訪問計數器Spring Boot
- Spring Boot通過@ConfigurationProperties訪問靜態資料 - reflectoringSpring Boot
- Spring Boot入門(五):使用JDBC訪問MySql資料庫Spring BootJDBCMySql資料庫
- Spring框架訪問資料庫的兩種方式的小案例Spring框架資料庫
- JDBC資料庫訪問JDBC資料庫
- 資料訪問 - EntityFramework整合Framework
- Spring Boot入門(七):使用MyBatis訪問MySql資料庫(xml方式)Spring BootMyBatisMySql資料庫XML
- 【SpringBoot實戰】資料訪問Spring Boot
- Spring Boot 2.x基礎教程:使用JdbcTemplate訪問MySQL資料庫Spring BootJDBCMySql資料庫
- Spring Boot入門(六):使用MyBatis訪問MySql資料庫(註解方式)Spring BootMyBatisMySql資料庫
- Spring Boot 揭祕與實戰(二) 資料儲存篇 – 資料訪問與多資料來源配置Spring Boot
- 外網訪問MySQL資料庫MySql資料庫
- Ext迭代陣列訪問資料陣列
- ABP 資料訪問 - IRepository 倉儲
- SQL Server 資料訪問策略:CLRMESQLServer
- Oracle資料庫限制訪問IPOracle資料庫
- spring cloud 引入公共專案jar,可以訪問controller以及相同資料庫mybatisSpringCloudJARController資料庫MyBatis
- JAVA訪問雲資料mysql出現問題JavaMySql
- 使用 @NoRepositoryBean 簡化資料庫訪問Bean資料庫
- 如何限制ip訪問Oracle資料庫Oracle資料庫
- jmeter 使用 ssh 方式訪問資料庫JMeter資料庫
- SQL Server 資料訪問策略:即席SQLCUSQLServer
- SpringBoot資料訪問(一) SpringBoot整合MybatisSpring BootMyBatis
- SpringBoot資料訪問(三) SpringBoot整合RedisSpring BootRedis
- SpringBoot資料訪問(二) SpringBoot整合JPASpring Boot
- SpringBoot資料訪問之Druid資料來源的使用Spring BootUI
- Ubuntu共享資料夾訪問許可權問題Ubuntu訪問許可權
- Vue原始碼之資料的代理訪問Vue原始碼
- 如何使用RedisTemplate訪問Redis資料結構Redis資料結構
- Xamarin SQLite教程資料庫訪問與生成SQLite資料庫
- Python學習之旅:訪問MySQL資料庫PythonMySql資料庫
- 資料庫訪問幾種方式對比資料庫
- Presto+Alluxio 加速 Iceberg 資料湖訪問RESTUX
- [開源] .Net ORM 訪問 Firebird 資料庫ORM資料庫
- (十二)SparkSQL Catalog訪問Hive後設資料資訊SparkSQLHive