转载之

http://blog.csdn.net/qq_33429968/article/details/53536778

前言

在部署某个项目代码时,使用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 
附图: 

具体实现

在hibernate的配置文件persistence.xml中加入需要的方言即可。 
配置方法如下:

<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
  • 1

附图: 

参考材料

http://www.2cto.com/database/201402/281152.html

总结

hibernate的方言是什么??相关推荐

  1. Hibernate SQL 方言(hibernate.dialect)

     Hibernate SQL 方言(hibernate.dialect) RDBMS Dialect DB2 org.hibernate.dialect.DB2Dialect DB2 AS/400 o ...

  2. hibernate 根据方言生成sql

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

  3. Hibernate SQL方言集合

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

  4. hibernate dialect 方言 sqlserver2000 的方言

    2019独角兽企业重金招聘Python工程师标准>>> hibernate没有sqlserver2000的方言,在分页的时候会报错,你可以用 net.sf.hibernate.dia ...

  5. Hibernate SQL方言

    RDBMS 方言 DB2 org.hibernate.dialect.DB2Dialect DB2 AS/400 org.hibernate.dialect.DB2400Dialect DB2 OS3 ...

  6. Hibernate数据库方言

    前言 在部署某个项目代码时,使用maven clean package wildfly:deploy命令部署到wild服务器时总是报错(报错信息暂时无法提供了).后经查询,是Hibernate方言的问 ...

  7. deegree sqldialect mysql_Hibernate SQL方言 (hibernate.dialect) 汇总

    如果出现如下错误,则可能是Hibernate SQL方言 (hibernate.dialect)设置不正确. Caused by: java.sql.SQLException: [Microsoft] ...

  8. hibernate相关收集

    2019独角兽企业重金招聘Python工程师标准>>> 1.Hibernate SQL方言 如果出现如下错误,则可能是Hibernate SQL方言 (hibernate.diale ...

  9. Hibernate 参数设置一览表

    转自"":https://blog.csdn.net/baidu_18607183/article/details/5248671 1 实现包含了Hibernate与数据库的基本连 ...

  10. spring管理hibernate的SessionFactory-多种配置方法

    其实很简单 第一种方式使用hiberante.cfg.xml: hiberante.cfg.xml配置如下: <!DOCTYPE hibernate-configuration PUBLIC   ...

最新文章

  1. C++基本知识点集锦(2022秋招)
  2. web service 基础学习
  3. python实现阿里云域名绑定动态IP
  4. 大二暑假周进度总结03
  5. [转]Xdebug----Failed loading
  6. 减一天 日期函数_excel日期函数:如何计算项目的开始和完成日期
  7. Python 小节案例-计算体脂率
  8. 内网计算机ip地址查询,内网ip地址怎么查看_怎么查看内网ip地址_如何查看电脑的内网IP地址...
  9. SAR、PAR和DAR
  10. python 正则表达式(3.24)
  11. (二)安装SVN服务器,web管理界面
  12. 初学DSP(2)-TMS320F280049C代码探究
  13. Stata:离群值!离群值?离群值!
  14. 07-Web storage
  15. 几个高斯分布/积分的基本结论和计算
  16. 两个ListMap中同下标的map去重合并
  17. Statistical Phrase-Based Translation_2003_Koehn【SMT】
  18. Taro 封装遮罩层
  19. 【惠普打印机有线连接实现扫描功能】
  20. 天天用 Spring ,Bean 懒加载原理你还不懂吗?

热门文章

  1. timing report 中 edge 理解
  2. GSM的PVT Fail
  3. 不作恶——我的考试信条
  4. 2022年福建最新特种工(施工升降机)模拟试题题库及答案
  5. 基于java+springmvc+mysql的校园快递服务信息系统
  6. Springboot毕设项目二手电子产品交易网m60x4(java+VUE+Mybatis+Maven+Mysql)
  7. 顺序死锁及其解决方案
  8. PK1:潘石屹侃房价:七大因素影响着2007年房价走势
  9. 人体存在感应雷达模组,马桶盖智能化发展应用,提升产品自动性能
  10. 计算机应用专业要求数学,什么专业对数学要求很高