关于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
就这几个坑搞了几天,宝宝搞得头都大了,写个东西纪念下!沙扬娜拉!