前言
在部署某个项目代码时,使用maven clean package wildfly:deploy命令部署到wild服务器时总是报错(报错信息暂时无法提供了)。后经查询,是Hibernate方言的问题,花了一个多小时的时间了解了一下,稍微做了一下梳理,特此分享。(PS:本人对Hibernate的具体技术细节不是很懂,故本博文还会有后续的更新修改)

知识储备
HQL和SQL
其实这部分应该放在第三部分讲解,鉴于本人的理解历程,就放在这讲了。

是什么
HQL:Hibernate Query Language,Hibernate查询语言;
SQL:Structured Query Language,结构化查询语言;

面向对象
hql:面向对象查询;(根本区别)
sql:面向数据库表查询;

使用方法
hql: from 后面跟的 类名 + 类对象 where + 符合条件的对象的属性;
例如:

from User user where user age=20;

sql:from 后面跟的 表名 + where + 符合条件的字段;
例如:

SELECT * FROM testtable WHERE age > 20;

将HQL转换成SQL
为什么
通常我们在做项目时,都是”某某框架+hibernate/JPA/JDBC+某某数据库”的形式,如果业务要求我们,要使项目能够适配多种数据库,也就是变成了”某某框架+hibernate/JPA/JDBC+某1数据库,某2数据库,某3数据库”。(比如:SpringMVC + Hibernate + MySQL,Oracle)那么,现在就需要我们把HQL语句转换成不同的SQL语句了。那么,方言就来了。

Hibernate方言
为什么
在Hibernate底层依然使用SQL语句来执行数据库操作,虽然所有关系型数据库都支持使用标准SQL语句,但所有数据库都对标准SQL进行了一些扩展,所以在语法细节上存在一些差异,因此Hibernate需要根据数据库来识别这些差异。假如系统需要数据库的变换时,那么用hibernate的话就只需要改一改配置文件(修改连接字符串、驱动类、方言等),而用传统的jdbc时,那么sql语言可能就要有很多改动。(略微重复了)

是什么
为实现HQL语句向不同数据库的SQL语句转换时,解决不同数据库之间的差异而制定的一套”规范”。
举例来说,我们在MySQL数据库里进行分页查询,只需使用limit关键字就可以了;而标准SQL并不支持limit关键字,例如Oracle则需要使用行内视图的方式来进行分页。同样的应用程序,当我们在不同数据库之间迁移时,底层数据库的访问细节会发生改变,而Hibernate也为这种改变做好了准备,现在我们需要做的是:告诉Hibernate应用程序的底层即将使用哪
种数据库——这就是Hibernate方言。

怎么办
简单,为hibernate设置合适的数据库方言,Hibernate将可以自动应付底层数据库访问所存在的细节差异。

不同数据库及其对应的方言
列表如下:
RDBMS 方言

DB2 org.hibernate.dialect.DB2Dialect
DB2 AS/400 org.hibernate.dialect.DB2400Dialect
DB2 OS390 org.hibernate.dialect.DB2390Dialect
PostgreSQL org.hibernate.dialect.PostgreSQLDialect
MySQL org.hibernate.dialect.MySQLDialect
MySQL with InnoDB org.hibernate.dialect.MySQLInnoDBDialect
MySQL with MyISAM org.hibernate.dialect.MySQLMyISAMDialect
Oracle (any version) org.hibernate.dialect.OracleDialect
Oracle 9i/10g org.hibernate.dialect.Oracle9Dialect
Sybase org.hibernate.dialect.SybaseDialect
Sybase Anywhere org.hibernate.dialect.SybaseAnywhereDialect
Microsoft SQL Server org.hibernate.dialect.SQLServerDialect
SAP DB org.hibernate.dialect.SAPDBDialect
Informix org.hibernate.dialect.InformixDialect
HypersonicSQL org.hibernate.dialect.HSQLDialect
Ingres org.hibernate.dialect.IngresDialect
Progress org.hibernate.dialect.ProgressDialect
Mckoi SQL org.hibernate.dialect.MckoiDialect
Interbase org.hibernate.dialect.InterbaseDialect
Pointbase org.hibernate.dialect.PointbaseDialect
FrontBase org.hibernate.dialect.FrontbaseDialect
Firebird org.hibernate.dialect.FirebirdDialect
<!-- 数据库方言注意: MYSQL在选择方言时,请选择最短的方言.--><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

Hibernate数据库方言相关推荐

  1. Hibernate中的数据库方言(Dialect)

    Hibernate中的数据库方言(Dialect) 在配置hibernate.cfg.xml时需指定使用数据库的方言: 例: <property name="dialect" ...

  2. 数据库方言(Dialect)

    在配置hibernate.cfg.xml时需指定使用数据库的方言: 例:<property name="dialect">org.hibernate.dialect.M ...

  3. hibernate 根据方言生成sql

    目录 hibernate 根据方言生成sql 建表语句生成 解析列属性 列类型 方言选择 hibernate 根据方言生成sql 建表语句生成 SchemaManagementToolCoordina ...

  4. java mysql方言_支持的数据库方言 · drinkjava2/jDialects Wiki · GitHub

    目前jDialects支持以下75种数据库方言,大部分是从Hibernate中导入过来的(按字母顺序排列): AccessDialect Cache71Dialect CobolDialect CUB ...

  5. Hibernate SQL方言集合

    Hibernate SQL方言告诉您的Hibernate应用程序应使用哪种SQL语言与您的数据库进行对话. 1. DB2 org.hibernate.dialect.DB2Dialect 2. DB2 ...

  6. DB2自定义数据库方言

    在DB2数据库上建了一张表,由于表中有一个字段值可能很大,所以就使用到了Long varchar类型 .使用应用程序对表进行查询操作时,后台出现异常.异常信息: org.springframework ...

  7. 什么是数据库方言?为什么要配置数据库方言?

    好久没更新博客了,这段时间都在写P8文档,主要就是开发手册和指南之类的.上周刚刚写完,其中一个小伙伴看了这个文档,问了一个很有意思的问题,我觉得有必要拿出来说一下.他问什么是数据库方言? 说这个问题之 ...

  8. 数据库方言Dialect

    使用Hibernate,在配置hibernate.cfg.xml时需指定使用数据库的方言: 例: <property name="dialect">org.hibern ...

  9. sqlalchemy limit_SQLAlchemy 数据库方言(dialect)是什么?

    抛开数据库,生活中的方言是什么?方言就是某个地方的特色语言,是一种区别于其它地方的语言,只有你们这一小块地方能听懂,出了这个地方又是另一种方言. 数据库方言也是如此,MySQL 是一种方言,Oracl ...

最新文章

  1. 网站服务器部署注意事项,服务器部署改云部署注意事项
  2. java 队列的数组_java使用数组实现队列
  3. Linux下批量添加用户的两种方法
  4. 面试:Handler 的工作原理是怎样的?
  5. 怎样把开启的服务放到后台?
  6. css --- 让不同的浏览器加载不同的CSS
  7. winshark重要数据结构
  8. Android知识大纲梳理
  9. vmware 官方下载
  10. N1烧USB供电跳线修复方法
  11. DropDownMenu下拉菜单
  12. 基于PHP的酒店住宿管理系统 毕业设计源码261455
  13. oracle缓存文件,oracle的缓存
  14. 网络诊断提示DNS服务器未响应处理
  15. 谷歌FLoC与禁用第三方Cookie后的江湖道术
  16. MemSQL性能测试结果
  17. ubuntu系统添加新的字体——JetBrains Mono 字体添加实例
  18. 大数据工程师学习路线
  19. mysql转换戳转换成小时_MySQL时间函数 | 时间戳和日期之间得转换
  20. 【干货】企业邮箱外贸开发信退信高,警惕被列入黑名单!

热门文章

  1. SOI round1 题解
  2. uniapp uview-ui退出登录后重新登录token不是最新的解决方案
  3. 数字电子技术(四)组合逻辑电路
  4. 帮北航小妹妹做的一道她的C++的作业题.
  5. dagger2 android封装,Dagger2 Android应用:@Component和@Module
  6. (55)FPGA时序违例的根本原因?
  7. Unity物体碰撞出现穿插问题/穿过问题/物体穿过场景模型
  8. 单片机实例2——模拟开关灯(硬件电路图+汇编程序+C语言程序)
  9. 使用git log统计代码行数
  10. caiguai docker-xware_【原创】基于Docker实现迅雷远程下载