Mybatis與Hibernate在事務(wù)處理上的區(qū)別主要有以下幾點(diǎn):
Hibernate采用了JPA規(guī)范的事務(wù)管理策略,即通過(guò)EntityManager來(lái)管理事務(wù)。而Mybatis則采用了傳統(tǒng)的JDBC事務(wù)管理策略,即通過(guò)Connection來(lái)管理事務(wù)。
Hibernate的事務(wù)管理是自動(dòng)的,即通過(guò)配置@Transactional注解或者在配置文件中指定事務(wù)管理器,框架會(huì)自動(dòng)幫助我們管理事務(wù)的提交和回滾。而Mybatis需要手動(dòng)控制事務(wù)的提交和回滾,需要在代碼中顯式調(diào)用commit()和rollback()方法。
Hibernate支持JPA的事務(wù)傳播機(jī)制,可以在一個(gè)事務(wù)中嵌套多個(gè)子事務(wù),并可以設(shè)置子事務(wù)的隔離級(jí)別和傳播行為。而Mybatis不支持事務(wù)的傳播機(jī)制,只能通過(guò)手動(dòng)控制事務(wù)的提交和回滾來(lái)管理事務(wù)。
Hibernate的事務(wù)管理比較重量級(jí),需要引入大量的依賴和配置,而且對(duì)于新手來(lái)說(shuō)比較復(fù)雜。而Mybatis的事務(wù)管理比較輕量級(jí),只需要引入少量的依賴和配置,比較容易上手。