使用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

文章
  • 同篇文章相同作者在简书的发布地址
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值