2013-05-09 69 views
1

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

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

回答

1

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

+0

那么什么将成为默认的方言?休眠可以使用connection.driver_class属性检测使用的数据库吗? – 2015-03-31 07:55:29

+0

请参阅此问题中Martin Andersson的答案:http://stackoverflow.com/questions/21012799/why-do-i-need-to-configure-the-sql-dialect-of-a-data-source – 2016-10-25 16:47:37

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