`

hibernate中的dialect作用

阅读更多

HibernateHQL已经支持大多数数据库函数,肯定不能包括所有, 幸运的是Hibernate已经对此做了相应的方案解决, 也就是Dialect中注册数据库函数.具体做法如下,我们以Mysql5为例.(对于不同的数据库去继承不同的数据库方言即可,比如oracle可以去查看hibernateoracledialect)

Mysql convert函数,现现在数据库的字符集是utf-8,如果想实现中文排序,就需要用convert(filedName using gbk) 实现,但现有的hibernatehql不能支持此函数, 我们可以现在Dialect注册一个函数,一样不赞成直接修改Hibernate 的源码, 我们可以扩展一个类,如下代码所示

import org.hibernate.Hibernate;

import org.hibernate.dialect.MySQL5Dialect;

import org.hibernate.dialect.function.SQLFunctionTemplate ;

 

public class MySQL5LocalDialect extends MySQL5Dialect {

public MySQL5LocalDialect(){

       super();

registerFunction("convert", new SQLFunctionTemplate(Hibernate.STRING, "convert(?1 using ?2)") );

    }

 }

 

现在applicationContext.xml中或hibernate.hbm.xml中修改

 

package.MySQL5LocalDialect

 

<property name="hibernate.dialect">

com.credit.publicmodel.util.MySQL5LocalDialect

</property>
现在HQL中使用convert方法, 例如: convert(fieldName, 'gbk') , "GBK"也可以是其他字符集.

提到这里顺便也说说hibernatedialect的作用吧:dialect就是“方言”,因为hibernate是要把Java对象转换成关系数据库来描述的,而关系数据库虽然有一些统一的标准,如SQL-92等,但是实际上各数据库如Oracle, MySQL, MS SQL Server等等为了提高性能或增加功能都提供了一些额外的标准或语法,因此,hibernate为了更好适配各种关系数据库,针对每种数据库都指定了一个方言dialect

你可以看到hibernate里面实际上方言只是一个类,它里面将不同数据类型、SQL语法转换成hibernate能理解的统一的格式。但注意,如果没有对应的dialectHibernate是无法使用这种数据库进行对象关系转换的。

分享到:
评论

相关推荐

    hibernate3.6.0dialect.jar

    hibernate3.6.0dialect.jar

    hibernate3dialect

    hibernate3dialect

    Hibernate4.0以上 SQLiteDialect.java

    hibernate 4以上Hibernate.INTEGER之类的不能使用了,之前使用的SQLiteDialect.java编译不过去了,这个可以。

    Hibernate连接SQLite配置说明和方言代码

    2.2、打开此文件,将“&lt;property name="hibernate.connection.url"&gt;jdbc:sqlite:D:/EGSDatabase.egsdata”一行中的数据库文件("D:/EGSDatabase.egsdata")修改为合适的数据库文件。 注:附件包含了...

    GBase_Hibernate3.2.3_GA-Dialect_8.3.81.51_build50.1.jar

    南大通用GBase数据库GBase_Hibernate3.2.3_GA-Dialect_8.3.81.51_build50.1.jar

    hibernate SQLServer2008Dialect

    SQLServer2008Dialect 优化了原来的分页查询数据方法以及在生成SQL时表后增加了with(nolock)

    瀚高数据库hibernate方言 hgdb-hibernate-dialect

    方言(Dialect)是Hibernate中的一个关键组件,它定义了如何与特定的数据库管理系统(DBMS)进行通信的规则和语法。 瀚高数据库,全称为HighGo Database,是一款源自中国的高性能、安全可靠的开源数据库系统,适用于...

    Hibernate不同数据库的连接及SQL方言

    在上面的配置中,我们使用了org.hibernate.dialect.SQLServerDialect SQL方言来生成适合SQL Server数据库的SQL语句。 下面是Hibernate支持的不同数据库的SQL方言: * DB2:org.hibernate.dialect.DB2Dialect * DB2...

    达梦Hibernate方言2.0至4.0

    Hibernate方言(Dialect)是Hibernate框架中的一个关键概念,它是Hibernate与特定数据库之间通信的桥梁。方言定义了如何将Hibernate的SQL语句转换为特定数据库所理解的SQL,包括列类型、约束、SQL语法等。例如,达梦...

    kingbasehibernate3.3.2dialect.jar

    hibernate下的kingbase的jar文件,需要的同学自行下载

    hibernate中所有数据库方言

    在Hibernate中,为了适应不同的数据库管理系统(DBMS),它引入了“方言”(Dialect)的概念。方言是Hibernate与特定数据库进行有效沟通的关键组件,负责处理SQL语法差异,确保跨数据库的一致性和兼容性。以下是对...

    DmDialect-for-hibernate4.0.zip

    Dialect在Hibernate中起着至关重要的作用,它定义了特定数据库的SQL语法、类型映射以及特殊功能。达梦方言则是专门为Hibernate定制,使得Hibernate可以理解和优化针对达梦数据库的SQL语句,从而提高性能和兼容性。 ...

    hibernate-5.4.6.Finaldialect.jar

    人大金仓hibernate驱动包

    hibernate-4.3.11finaldialect.jar

    Hibernate人大金仓jar包

    hibernate jar包

    在开发过程中,使用这个“hibernate jar包”可以快速搭建Hibernate环境,只需将这些jar文件添加到项目的类路径中,然后配置相应的Hibernate配置文件(如hibernate.cfg.xml),就可以开始使用Hibernate进行持久化操作...

    达梦 Hibernate 方言 2.0 至 4.0

    而方言(Dialect)则是Hibernate中用于适配不同数据库系统的类,它定义了SQL语法的特定实现,使得Hibernate可以正确地在不同的数据库上执行SQL语句。 达梦数据库作为国内自主研发的高性能、高安全性的数据库产品,...

    kingbase8-Finaldialect-5.2.17.jar

    亲测可以使用kingbase8-Finaldialect-5.2.17.jar kingbase8-8.2.0.jar

    数据库连接字符串

    Oracle 9i/10g org.hibernate.dialect.Oracle9Dialect Sybase org.hibernate.dialect.SybaseDialect Sybase Anywhere org.hibernate.dialect.SybaseAnywhereDialect Microsoft SQL Server org.hibernate....

    phoenix-hibernate-dialect:Apache Phoenix Hibernate方言

    凤凰冬眠方言描述Apache Phoenix Hibernate方言。建造 该项目使用maven进行构建。 只需在项目根目录中键入下一个命令。 mvn clean install要部署到Bintray,只需在项目根目录中键入下一个命令。 将替换为当前的Gpg...

    kingbaseV8驱动jar包

    如果使用Hibernate,需要在配置文件中指定`hibernate.dialect`为`org.hibernate.dialect.KingbaseDialect`。 6. **最佳实践** - 选择适合项目JDK版本的驱动jar包,避免版本不兼容问题。 - 确保正确配置数据库连接...

Global site tag (gtag.js) - Google Analytics