我是靠谱客的博主 故意西装,最近开发中收集的这篇文章主要介绍mysql57dialect_@Deprecated 过时的 MySQL5InnoDBDialect,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

什么是Hibernate方言?

Hibernate方言是用来告诉Hibernte如何对指定的数据库生成相应的SQL语句。

尽管做了很多尝试去使SQL语句标准化,但是不同的数据库支持的SQL语句还是有很多不同的地方。

所以Hibernate使用方言来辅助生成正确的SQL语句。

MySQL5Dialect与MySQL5InnoDBDialect有什么区别?

他们最大的区别是,在使用Hibernate创建表时MySQL5InnoDBDialect会在生成的建表SQL语句最后加上"ENGINE=InnoDB"。

InnoDB是一种MySQL数据库引擎.MySQL5.5及之后使用它做为默认引擎。它提供了ACID兼容的事务(Transaction)功能,并提供外键支持。

MySQLDialect与MySQL5Dialect有什么区别?

MySQLDialect是针对MySQL5之前的版本。主要变化还是在于建表SQL语句。

MySQL由于4到5还是有不小的变化。比如varchar在4及之前版本最大长度限制为255,5及之后版本最大长度限制为65535。

MySQLInnoDBDialect会在生成的建表SQL语句最后加上"TYPE=InnoDB"。

MySQL5InnoDBDialect过时了

升级到 Hibernate 5 的时候,就会发现 MySQL5InnoDBDialect,被标注@Deprecated也就是过时了。不仅仅是 MySQL5InnoDBDialect 过时了,所有带InnoDB的 Dialect 都被标注过时了@Deprecated;在标注有 InnoDBDialect 过时的同时 新加了 MySQL55Dialect 及 MySQL57Dialect。

如果查看源码就会发现 MySQL55Dialect 与 MySQL5InnoDBDialect 源码一模一样。

毕竟 MySQL 从 5.5 开始就默认使用 InnoDB 引擎,MySQL 8 已经移除了 MyISAM 引擎。Hibernate 的作者认为Dialect分为两类就没有什么必要了。

org.hibernate.dialect.MySQL55Dialect

org.hibernate.dialect.MySQL57Dialect

1

2

3

org.hibernate.dialect.MySQL55Dialect

org.hibernate.dialect.MySQL57Dialect

后记

Hibernate 作者最坑的地方是标注了@Deprecated之时,补了一个注释“Use "hibernate.dialect.storage_engine=innodb" environment variable or JVM system property instead.”,导致我以为是通过配置的方式来指定引擎。我在 Spring Boot 中各种拼配置都没成功,后来发现这个配置是要写在 classpath 下的 hibernate.properties 内。

最后

以上就是故意西装为你收集整理的mysql57dialect_@Deprecated 过时的 MySQL5InnoDBDialect的全部内容,希望文章能够帮你解决mysql57dialect_@Deprecated 过时的 MySQL5InnoDBDialect所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部