前提
引入Spring boot jpa开发时配置使用的数据库为mysql。
科普
1.Mysql最常用存储引擎分别为InnoDB&MyISAM,其中InnoDB引擎是支持事务处理的,但是MyISAM引擎不支持事务处理;
查询Mysql所有支持的存储引擎命令为:show engines;
2.使用Spring boot jpa配置Mysql数据库时默认配置使用的存储引擎为MyISAM,导致通过jpa自动建立的表无法支持事务的处理;
如何修改JPA使用的Mysql存储引擎
在使用spring boot jpa开发项目时配置使用的数据库是mysql,如果需要使用数据库的事务,需要注意修改Mysql的存储引擎:
1.通过在Spring boot的配置文件中加入配置信息,spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL55Dialect
2.加入以上配置后Mysql建立的表存储引擎使用的就是InnoDB,即可支持事务处理了;
3.在项目中使用多数据源配置时只要保持配置的方言是这个org.hibernate.dialect.MySQL55Dialect配置信息,那么Mysql存储引擎就是InnoDB,只是在多数据源配置的情况下配置信息的key可能不一样,比如是这样
spring.jpa.hibernate.primary-dialect=org.hibernate.dialect.MySQL55Dialect
spring boot关于jpa使用不同数据源的配置信息说明
单数据源配置信息示例
#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
多数据源配置信息示例
#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
文章
- 同篇文章相同作者在简书的发布地址