Hibernate的dialect大全

本文详细介绍了Hibernate中针对不同关系型数据库的方言配置方法,包括DB2、PostgreSQL、MySQL等主流数据库的方言设置及示例。
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

Access数据库的方言包:http://www.hxtt.com/test/hibernate.zip
路径:com.hxtt.support.hibernate.HxttAccessDialect

例子:
<property name="hibernate.connection.username" value="sa"/>
<property name="hibernate.connection.password" value="sa"/>
<property name="hibernate.connection.url" value="jdbc:sqlserver://localhost:1433;databaseName=test"/>
<property name="hibernate.connection.driver_class" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect"/>

<property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect"/>

如果是Toplink则添加:

<property name="toplink.jdbc.user" value="sa"/>
<property name="toplink.jdbc.password" value="sa"/>
<property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/test"/>
<property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="toplink.plafrom.class.name" value="oracle.toplink.essentials.platform.database.HSQLPlatform" />
### 配置 Hibernate Dialect 以自动为字段名添加双引号 在使用 Hibernate 进行数据库操作时,若字段名与数据库的关键字冲突(如 `user`、`order`、`end` 等),会导致 SQL 语句解析失败。为了解决这一问题,Hibernate 提供了方言机制来控制标识符的引用方式。通过配置合适的 `Dialect`,可以实现自动为字段名和表名添加双引号,从而避免关键字冲突。 达梦数据库提供了专用的 `org.hibernate.dialect.DmDialect`,该方言支持对所有标识符进行自动引号处理。启用此方言后,Hibernate 在生成 SQL 语句时会将字段名和表名用双引号包裹,例如将 `end` 转换为 `"end"`,确保符合达梦数据库的 SQL 解析规则[^1]。 以下是一个典型的 Spring Boot 配置示例,展示了如何启用 `DmDialect` 并启用自动引号功能: ```yaml spring: jpa: properties: hibernate: dialect: org.hibernate.dialect.DmDialect identifier-generator-type: legacy-hilo ``` 此外,还可以通过继承并扩展默认的 `DmDialect` 来自定义引号策略。例如,可以通过覆盖 `quoteIdentifier()` 方法来强制对所有标识符加引号,或根据具体需求实现更灵活的逻辑。 ```java import org.hibernate.dialect.DmDialect; import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment; public class CustomDmDialect extends DmDialect { @Override public boolean quoteIdentifier() { return true; // 强制对所有标识符加引号 } @Override protected boolean supportsPartitionBy() { return false; } } ``` 然后,在 Spring Boot 的配置文件中指定该自定义方言: ```yaml spring: jpa: properties: hibernate: dialect: com.example.CustomDmDialect ``` 通过上述配置,Hibernate 将自动为字段名和表名添加双引号,从而有效避免字段名与数据库关键字之间的冲突问题。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值