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

问题描述 投票:0回答:1

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

hibernate jpa-2.1
1个回答
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将能够通过在引导期间询问JDBC连接的一些问题来确定要使用的正确方言。有关Hibernate确定要使用的正确方言的能力(以及影响该分辨率的能力)的信息,请参阅方言分辨率。

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

© www.soinside.com 2019 - 2024. All rights reserved.