Hibernate 简明教程

Hibernate - Configuration

Hibernate 需要提前知道——在哪里找到映射信息,这些映射信息定义了 Java 类和数据库表之间的相互关系。Hibernate 还需要一组与数据库和其他相关参数相关的配置设置。所有此类信息通常按标准 Java 属性文件 hibernate.properties 提供,或按名为 hibernate.cfg.xml 的 XML 文件提供。

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

Hibernate Properties

以下是一些重要属性,在独立情况下,您需要对其进行数据库配置:

Sr.No.

Properties & Description

1

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

2

hibernate.connection.driver_class The JDBC driver class.

3

hibernate.connection.url 连接到数据库实例的 JDBC URL。

4

hibernate.connection.username The database username.

5

hibernate.connection.password The database password.

6

hibernate.connection.pool_size 限制了在 Hibernate 数据库连接池中等待的连接数量。

7

hibernate.connection.autocommit 允许对 JDBC 连接使用自动提交模式。

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

Sr.No.

Properties & Description

1

hibernate.connection.datasource 应用程序服务器上下文中定义的 JNDI 名称,您正在为应用程序使用该 JNDI 名称。

2

hibernate.jndi.class JNDI 的 InitialContext 类。

3

hibernate.jndi.<JNDIpropertyname> 将您想要的任何 JNDI 属性传递给 JNDI InitialContext。

4

hibernate.jndi.url 提供 JNDI 的 URL。

5

hibernate.connection.username The database username.

6

hibernate.connection.password The database password.

Hibernate with MySQL Database

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

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

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
   "-//Hibernate/Hibernate Configuration DTD 5.3//EN"
   "http://hibernate.org/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://localhost/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> 标记,这些标记与 Hibernate 映射文件相关,我们将在下一章中看到 Hibernate 映射文件确切是什么以及我们如何以及为什么使用它?

hbm2ddl.auto Property

Hibernate 中的 hbm2ddl.auto 属性定义如何处理数据库架构。可能的值包括:

  1. create ——如果值为“create”,则当创建 SessionFactory 对象时,Hibernate 会在数据库中创建一个新表。如果在数据库中存在具有相同名称的表,它会删除该表及其数据并创建一个新表。

  2. update ——如果值为“update”,则 Hibernate 会先验证该表在数据库中是否存在。如果存在,则按更改修改该表。如果不存在,则创建一个新表。

  3. validate −如果值为“validate”,则 Hibernate 仅验证表是否存在。如果表不存在,则它会抛出一个异常。

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

  5. none −它不会对架构进行任何更改。

Hibernate Dialect

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

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

Sr.No.

Database & Dialect Property

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 - aka 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 and later org.hibernate.dialect.Ingres9Dialect

13

Ingres 10 and later 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 (prior to 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 Relational Database (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