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

时间:2017-12-18 03:18:17

标签: hibernate jpa-2.1

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

1 个答案:

答案 0 :(得分:1)

通常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将能够确定正确的Dialect   通过询问JDBC连接期间的一些问题来使用   引导。有关Hibernate确定的能力的信息   使用正确的方言(以及你影响该决议的能力),   见方言解析。

     

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