为什么hibernate严格要求定义hibernate.dialect属性,而JPA规范并没有强制它?

在使用hibernate学习java持久性时,我发现hibernate使得它强制定义dialect属性。我很困惑,SQL是通用语言,它用于数据库通信,为什么我们应该为不同的数据库使用不同的方言?为什么hibernate严格要求定义方言,而JPA规范不关心它?为什么hibernate严格要求定义hibernate.dialect属性,而JPA规范并没有强制它?

回答:

通常Hibernate不需要设置hibernate.dialect属性。

看一看哪些文档章节7.12说:http://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#database-dialect

7.12。数据库方言

尽管SQL相对标准化,但每个数据库供应商都使用子集和ANSI SQL定义语法的超集。这被称为 数据库的方言。 Hibernate通过其各个数据库供应商的org.hibernate.dialect.Dialect类和 各种子类来处理这些 方言中的变体。

在大多数情况下,Hibernate将能够通过在 引导过程中询问JDBC Connection的一些问题来确定使用的方言 。有关Hibernate能够确定要使用的 适当的方言(以及您影响该分辨率的能力)的信息,请参阅方言分辨率, 。

如果由于某种原因无法确定合适的人,或者您想使用自定义方言,则需要设置 hibernate.dialect设置。

以上是 为什么hibernate严格要求定义hibernate.dialect属性,而JPA规范并没有强制它? 的全部内容, 来源链接: utcz.com/qa/260666.html

回到顶部