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