没有指定Hibernate方言

时间:2013-05-09 12:31:06

标签: java hibernate

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

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

我认为这不是强制性的,但在hibernate.cfg.xml中将其设置为

是一种很好的做法
<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

答案 2 :(得分:0)

这就是为什么...

如果使用hibernate配置来设置数据库连接,则不需要Dialect属性,因为hibernate可以为您做到这一点:

hibernate.connection.driver
hibernate.connection.url

user configs and etc...

但是,如果您使用常规数据源代码建立连接并使用休眠模式,则需要指定hibernate.dialect属性,因为该连接将不知道什么是休眠方言。

dataSource.setdriverClassName
datasource.setUrl...
password configs and etc...