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"  
   "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:///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

廣告