我是Hibernate的新手。在阅读休眠时,我遇到了Dialect
属性。无论我们将在应用程序中使用哪种数据库,我们都需要设置与该数据库相关的方言,并且Hibernate将生成与该数据库相关的适当查询。不指定休眠方言
只想知道它是否是必须设置的属性?如果不是并且在hibernate.cfg.xml文件中未指定,那么Hibernate将如何生成SQL查询,即将生成哪个数据库兼容的SQL查询?
我是Hibernate的新手。在阅读休眠时,我遇到了Dialect
属性。无论我们将在应用程序中使用哪种数据库,我们都需要设置与该数据库相关的方言,并且Hibernate将生成与该数据库相关的适当查询。不指定休眠方言
只想知道它是否是必须设置的属性?如果不是并且在hibernate.cfg.xml文件中未指定,那么Hibernate将如何生成SQL查询,即将生成哪个数据库兼容的SQL查询?
不,它不是强制性的,根据文档 http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/session-configuration.html#configuration-optional-dialects ,我没有尝试过相同的。虽然你对别人的回答指向,我也想从这里的一些有经验的人那里得到答案。 :)
我认为这不是强制性的,但它是一个很好的做法,将其设置成你的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
那么什么将成为默认的方言?休眠可以使用connection.driver_class属性检测使用的数据库吗? – 2015-03-31 07:55:29
请参阅此问题中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