我是Hibernate的新手。在阅读Hibernate时,我遇到了Dialect
属性。无论我们在应用程序中使用什么数据库,我们都需要设置与该数据库相关的方言,Hibernate将生成与该数据库相关的适当查询。
只是想知道它是否是要设置的强制属性?如果它没有在 hibernate.cfg.xml 文件中指定,那么Hibernate将如何生成SQL查询,即将生成哪个符合数据库的SQL查询?
答案 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...