使用Spring boot开发时引入Spring boot jpa自动生成表时发现表不支持事物

前提

引入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

你可能感兴趣的:(使用Spring boot开发时引入Spring boot jpa自动生成表时发现表不支持事物)