1

我是休眠的新手。在阅读 Hibernate 时,我遇到了该Dialect属性。无论我们将在应用程序中使用什么数据库,我们都需要设置与该数据库相关的方言,Hibernate 将生成与该数据库相关的适当查询。

只是想知道它是否是必须设置的属性?如果没有并且没有在hibernate.cfg.xml文件中指定,那么 Hibernate 将如何生成 SQL 查询,即将生成哪个数据库兼容的 SQL 查询?

4

3 回答 3

1

不,根据文档http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/session-configuration.html#configuration-optional-dialects ,这不是强制性的 ,我没有尝试过。虽然您对其他观点的回答我也想从这里的一些经验丰富的人那里得到答案。:)

于 2013-05-09T12:44:34.743 回答
0

我认为这不是强制性的,但将其设置在您的hibernate.cfg.xmlas中是一个好习惯

<property name="dialect">your dialect</property> 

可能的值:

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              org.hibernate.dialect.Oracle9iDialect
Oracle 10g             org.hibernate.dialect.Oracle10gDialect
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
于 2013-05-09T12:45:07.273 回答
0

这就是为什么...

如果您使用 hibernate 配置设置数据库连接,则不需要 dialect 属性,因为 hibernate 会为您完成:

hibernate.connection.driver
hibernate.connection.url

user configs and etc...

但是,如果你用常规数据源代码建立连接并使用hibernate你需要指定hibernate.dialect属性,因为那样连接将不知道hibernate是什么方言。

dataSource.setdriverClassName
datasource.setUrl...
password configs and etc...
于 2018-09-07T07:03:21.763 回答