前提
引入Spring boot jpa開發(fā)時配置使用的數(shù)據(jù)庫為mysql。
科普
1.Mysql最常用存儲引擎分別為InnoDB&MyISAM,其中InnoDB引擎是支持事務處理的,但是MyISAM引擎不支持事務處理碉怔;
查詢Mysql所有支持的存儲引擎命令為:show engines;
2.使用Spring boot jpa配置Mysql數(shù)據(jù)庫時默認配置使用的存儲引擎為MyISAM哩至,導致通過jpa自動建立的表無法支持事務的處理煎饼;
如何修改JPA使用的Mysql存儲引擎
在使用spring boot jpa開發(fā)項目時配置使用的數(shù)據(jù)庫是mysql逼泣,如果需要使用數(shù)據(jù)庫的事務玫镐,需要注意修改Mysql的存儲引擎:
1.通過在Spring boot的配置文件中加入配置信息,spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL55Dialect
2.加入以上配置后Mysql建立的表存儲引擎使用的就是InnoDB辅柴,即可支持事務處理了箩溃;
3.在項目中使用多數(shù)據(jù)源配置時只要保持配置的方言是這個org.hibernate.dialect.MySQL55Dialect配置信息,那么Mysql存儲引擎就是InnoDB,只是在多數(shù)據(jù)源配置的情況下配置信息的key可能不一樣碌嘀,比如是這樣
spring.jpa.hibernate.primary-dialect=org.hibernate.dialect.MySQL55Dialect
spring boot關于jpa使用不同數(shù)據(jù)源的配置信息說明
單數(shù)據(jù)源配置信息示例
#jpa
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=false
spring.jackson.serialization.indent-output=true
#使用InnoDB引擎
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL55Dialect
多數(shù)據(jù)源配置信息示例
#jpa
spring.jpa.hibernate.primary-dialect=org.hibernate.dialect.MySQL55Dialect
spring.jpa.hibernate.secondary-dialect=com.ruesga.phoenix.dialect.PhoenixDialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.jdbc.batch_size=300
spring.jpa.show-sql=false
spring.jackson.serialization.indent-output=true