Hibernate - 配置



Hibernate 需要预先知道在哪里找到定义 Java 类如何与数据库表相关联的映射信息。Hibernate 还需要一组与数据库和其他相关参数相关的配置设置。所有这些信息通常都作为名为hibernate.properties的标准 Java 属性文件或名为hibernate.cfg.xml的 XML 文件提供。

在我的示例中,我将考虑使用 XML 格式的文件hibernate.cfg.xml来指定所需的 Hibernate 属性。大多数属性都采用其默认值,并且除非确实需要,否则不需要在属性文件中指定它们。此文件保存在应用程序类路径的根目录中。

Hibernate 属性

以下是您在独立情况下为数据库配置所需的重要属性列表:

序号 属性及描述
1

hibernate.dialect

此属性使 Hibernate 为所选数据库生成适当的 SQL。

2

hibernate.connection.driver_class

JDBC 驱动程序类。

3

hibernate.connection.url

到数据库实例的 JDBC URL。

4

hibernate.connection.username

数据库用户名。

5

hibernate.connection.password

数据库密码。

6

hibernate.connection.pool_size

限制在 Hibernate 数据库连接池中等待的连接数。

7

hibernate.connection.autocommit

允许对 JDBC 连接使用自动提交模式。

如果您正在使用数据库以及应用程序服务器和 JNDI,则需要配置以下属性:

序号 属性及描述
1

hibernate.connection.datasource

在您用于应用程序的应用程序服务器上下文中定义的 JNDI 名称。

2

hibernate.jndi.class

JNDI 的 InitialContext 类。

3

hibernate.jndi.<JNDIpropertyname>

将您喜欢的任何 JNDI 属性传递给 JNDI InitialContext

4

hibernate.jndi.url

提供 JNDI 的 URL。

5

hibernate.connection.username

数据库用户名。

6

hibernate.connection.password

数据库密码。

Hibernate 与 MySQL 数据库

MySQL 是当今最流行的开源数据库系统之一。让我们创建hibernate.cfg.xml配置文件并将其放置在应用程序类路径的根目录中。您需要确保您的 MySQL 数据库中有testdb数据库,并且您有一个名为test的用户可以访问该数据库。

XML 配置文件必须符合 Hibernate 3 Configuration DTD,该 DTD 可在http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd找到。

<?xml version='1.0' encoding='UTF-8'?>  
<!DOCTYPE hibernate-configuration PUBLIC  
   "-//Hibernate/Hibernate Configuration DTD 5.3//EN"  
   "https://hibernate.com.cn/dtd/hibernate-configuration-3.0.dtd">  

<hibernate-configuration>  
   <session-factory>  
      <property name="hbm2ddl.auto">update</property>  
      <property name="dialect">org.hibernate.dialect.MySQL8Dialect</property>  
      <property name="connection.url">jdbc:mysql://127.0.0.1/TUTORIALSPOINT</property>  
      <property name="connection.username">root</property>  
      <property name="connection.password">guest123</property>  
      <property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>  
      <mapping resource="employee.hbm.xml"/>  
   </session-factory>  
</hibernate-configuration>

上面的配置文件包含<mapping>标签,这些标签与 hibernatemapping 文件相关,我们将在下一章中了解 hibernate 映射文件到底是什么以及我们如何以及为什么要使用它?

hbm2ddl.auto 属性

Hibernate 中的 hbm2ddl.auto 属性定义了如何处理数据库模式。可能的值有

  • create - 如果值为“create”,则在创建 SessionFactory 对象时,Hibernate 会在数据库中创建一个新表。如果数据库中存在同名的表,则会删除该表及其数据并创建一个新表。

  • update - 如果值为“update”,则 Hibernate 首先验证数据库中是否存在该表。如果存在,则根据更改修改该表。如果不存在,则创建一个新的表。

  • validate - 如果值为“validate”,则 Hibernate 只验证表是否存在。如果表不存在,则抛出异常。

  • create-drop - 如果值为“create-drop”,则在创建 SessionFactory 时,Hibernate 会创建一个新表,执行所需的操作,并在销毁 SessionFactory 时删除该表。此值用于测试 hibernate 代码。

  • none - 它不会对模式进行任何更改。

Hibernate 方言

数据库方言是一个配置选项,它允许软件将通用 SQL 语句转换为特定于供应商的 DDL 和 DML。不同的数据库产品,如 PostgreSQL、MySQL、Oracle 和 SQL Server,都有自己的 SQL 变体,称为 SQL 方言。

以下是各种重要数据库方言属性类型的列表:

序号 数据库及方言属性
1

Caché 2007.1

org.hibernate.dialect.Cache71Dialect

2

DB2

org.hibernate.dialect.DB2Dialect

3

DB2/390

org.hibernate.dialect.DB2390Dialect

4

DB2/400

org.hibernate.dialect.DB2400Dialect

5

Cloudscape 10 - 也称为 Derby。

org.hibernate.dialect.DerbyDialect

6

Firebird

org.hibernate.dialect.FirebirdDialect

7

FrontBase

org.hibernate.dialect.FrontBaseDialect

8

H2

org.hibernate.dialect.H2Dialect

9

HSQLDB(HyperSQL)

org.hibernate.dialect.HSQLDialect

10

Informix

org.hibernate.dialect.InformixDialect

11

Ingres 9.2

org.hibernate.dialect.IngresDialect

12

Ingres 9.3 及更高版本

org.hibernate.dialect.Ingres9Dialect

13

Ingres 10 及更高版本

org.hibernate.dialect.Ingres10Dialect

14

Interbase

org.hibernate.dialect.InterbaseDialect

15

Microsoft SQL Server 2000

org.hibernate.dialect.SQLServerDialect

16

Microsoft SQL Server 2005

org.hibernate.dialect.SQLServerDialect

17

Microsoft SQL Server 2008

org.hibernate.dialect.SQLServer2008Dialect

18

MySQL(5.x 之前)

org.hibernate.dialect.MySQLDialect

19

MySQL 5.x

org.hibernate.dialect.MySQL5Dialect

20

Oracle 8i

org.hibernate.dialect.Oracle8iDialect

21

Oracle 9i

org.hibernate.dialect.Oracle9iDialect

22

Oracle 10g

org.hibernate.dialect.Oracle10gDialect

23

Oracle 11g

org.hibernate.dialect.Oracle10gDialect

24

Pointbase

org.hibernate.dialect.PointbaseDialect

25

PostgreSQL

org.hibernate.dialect.PostgreSQLDialect

26

PostgreSQL Plus

org.hibernate.dialect.PostgrePlusDialect

27

Progress

org.hibernate.dialect.ProgressDialect

28

Unisys 2200 关系数据库 (RDMS)

org.hibernate.dialect.RDMSOS2200Dialect

29

SAP DB

org.hibernate.dialect.SAPDBDialect

30

Sybase 11.9.2

org.hibernate.dialect.Sybase11Dialect

31

Sybase Anywhere

org.hibernate.dialect.SybaseAnywhereDialect

32

Sybase Adaptive Server Enterprise (ASE) 15

org.hibernate.dialect.SybaseASE15Dialect

33

Teradata

org.hibernate.dialect.TeradataDialect

34

TimesTen 5.1

org.hibernate.dialect.TimesTenDialect

广告