关于hibernate5针对各数据库hibernate.hbm2ddl.auto=update 的天坑

本文分享了使用Hibernate5时配置hibernate.hbm2ddl.auto=update的实际经验,尤其是在不同数据库(如MySQL、Oracle、SQL Server)上的表现差异及遇到的问题。

关于hibernate5针对各数据库hibernate.hbm2ddl.auto=update 的天坑

在使用Hibernate的时候我们一般都会配置hibernate.hbm2ddl.auto这个属性,而其中的常见的属性值包括:

create
create-drop
validate
update

而在使用的过程中,update是我用的比较多的,由于官方文档对于这个属性产生的效果和使用的范围没有做详细的说明,只是提了一句会会更新数据库的schema,而且不建议在生产环境中使用,但是怎么更新,更新都包括哪些内容?
请参考一位大佬的一篇Hibernate的hbm2ddl.auto=update的内幕

hibernate配置信息

hibernate.hbm2ddl.auto=update
hibernate.show_sql=true
hibernate.format_sql=true
  • mysql
    版本:5.5.16
    配置信息:
driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8
username=
password=
hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect

mysql使用该配置没什么坑,只是只能更新表结构,不能更新字段信息(小弟刚接触hibernate,不是很了解有没有这个功能)

  • oracle
    版本:11.2.0.1.0
    配置信息:
driverClass=oracle.jdbc.OracleDriver
url=jdbc:oracle:thin:@127.0.0.1:1521:TEST
username=
password=
#对于Oracle而言,是大写的用户名称,这个一定得写,要不不能获取到oracle对应的表结构,我就是被这个坑了
hibernate.default_schema = USERNAME
hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
  • sql server
    版本:SQL Server 2008 R2 (SP2)
    配置信息:
driverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver
url=jdbc:sqlserver://127.0.0.1;databaseName=clever_dev
username=
password=
#如果数据库为sql server,oracle时,不加hibernate.default_schema参数不能查询到对应数据库表结构
hibernate.default_schema = dbo
hibernate.dialect=org.hibernate.dialect.SQLServer2008Dialect

就这几个坑搞了几天,宝宝搞得头都大了,写个东西纪念下!沙扬娜拉!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值