spring data jpa ddl-auto 属性

本文探讨了SpringDataJPA中实体类与数据库表结构的同步问题,特别是通过配置spring.jpa.hibernate.ddl-auto来控制实体类变更时数据库表的行为,并介绍了不同配置选项的效果。

springdata jpa:

问题:代码程序实体类更改,竟然改了数据库字段;

 

结果:希望实体类字段根据数据库表字段的更新而更新;不是数据库表根据实体类的更新而更新;

 

jpa:
    database: MYSQL
    show-sql: false
    hibernate:
      show-sql: false
      ddl-auto: update
      naming-strategy: org.hibernate.cfg.ImprovedNamingStrategy
    properties:
      hibernate.dialect: org.hibernate.dialect.MySQL5Dialect

 

解释:

ddl-auto:主要存在四种属性:create,create-drop,update和validate

  • ddl-auto:create ----每次运行该程序,没有表格会新建表格,表内有数据会清空;
  • ddl-auto:create-drop ----每次程序结束的时候会清空表
  • ddl-auto:update ---- 每次运行程序,没有表格会新建表格,表内有数据不会清空,只会更新
  • ddl-auto: validate ---- 运行程序会校验数据与数据库的字段类型是否相同,不同会报错。

补充:

jpa是一种规范,但是对jpa支持最好的就是hibernate,所以一般来说jpa指的就是hibernate是实现的jpa。在使用springboot时,使用jpa,加上jpa的起步以来spring-boot-starter-data-jpa即可。

在配置文件中除了配置数据源以外,还可以配置一些方便开发使用的选项,如spring.jpa.show-sql=true,这个属性可以在操作数据库时显示sql语句。

还有一个就是上面的ddl-auto。

 

如果希望实体类发生改动而数据库表做出相应的更改且不破坏数据库现有的数据,要将spring.jpa.hibernate.ddl-auto属性值设置为update,同时需要在实体类上的@Table注解中加上catalog属性,值为数据库命。

这里还有一点,就算把ddl-auto设置成update值,也不能识别对数据库表结构的所有更改,往往只能识别出增加的字段,比如修改字段名,修改字段类型或者删除一个字段都是不能够识别的。

 

总结:

所以说,数据库表结构修改了,如何让实体类自适应数据库表结构:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值