首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Hibernate 持久化類與映射文件核心規範詳解

     編輯:Java 相關知識

前言

Hibernate 的核心任務是將 Java 對象狀態持久化到關係數據庫。持久化類 與 映射文件 是這一過程的兩大基石。本文梳理 POJO 規範、主鍵策略、屬性映射、映射文件結構與關鍵元素。

一、持久化類(POJO)設計規範

雖非強制,但遵循以下約定可獲得最佳性能與兼容性:

  1. 無參構造器:Hibernate 實例化時調用(public/protected 均可)。
  2. 標識屬性:對應表主鍵,建議用包裝類型(Long、Integer)便於判斷臨時態。
  3. 屬性私有 + Getter/Setter:符合 JavaBean 標準,支持字節碼增強與代理。
  4. 非 final 類/方法:允許 Hibernate 生成代理(延遲加載、攔截器)。
  5. 不依賴 EJB/特定框架接口:保持純 POJO,便於遷移與測試。

標準 POJO 範例

public class Employee {
    private Integer id;
    private String firstName;
    private String lastName;
    private Integer salary;

    public Employee() {}
    public Employee(String fn, String ln, Integer sal) {
        this.firstName = fn; this.lastName = ln; this.salary = sal;
    }
    // Getter/Setter 省略
}

二、映射文件結構與核心元素

文件命名慣例:<ClassName>.hbm.xml(如 Employee.hbm.xml)。

根元素

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "https://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="Employee" table="EMPLOYEE">
        ...
    </class>
</hibernate-mapping>

核心子元素詳解

元素作用關鍵屬性
<class>類表映射name(全限定類名)、table(表名)
<meta>類描述(可選)attribute="class-description"
<id>主鍵映射name、column、type(Hibernate 類型)
<generator>主鍵生成策略class="native/identity/sequence/hilo/uuid/assigned"
<property>普通屬性映射name、column、type、length、not-null

主鍵生成策略選擇指南

  • native:根據底層數據庫自動選擇 identity/sequence/hilo(推薦跨庫項目)。
  • identity:MySQL/SQL Server 自增列。
  • sequence:Oracle/PostgreSQL 序列。
  • assigned:應用程序手動分配(如業務鍵)。

三、完整映射文件範例

<hibernate-mapping>
<class name="Employee" table="EMPLOYEE">
    <meta attribute="class-description">Employee entity</meta>
    <id name="id" type="int" column="id">
        <generator class="native"/>
    </id>
    <property name="firstName" column="first_name" type="string"/>
    <property name="lastName" column="last_name" type="string"/>
    <property name="salary" column="salary" type="int"/>
</class>
</hibernate-mapping>

四、數據庫表結構對應

CREATE TABLE EMPLOYEE (
    id INT NOT NULL AUTO_INCREMENT,
    first_name VARCHAR(20),
    last_name VARCHAR(20),
    salary INT,
    PRIMARY KEY (id)
);

五、進階提示

  • 映射文件可通過 XDoclet、Middlegen、AndroMDA 等工具自動生成。
  • 現代項目多採用 JPA 註解(@Entity/@Table/@Id/@Column) 替代 XML,部署更簡潔。
  • 類型映射:Hibernate 類型(string、int、timestamp 等)負責 Java↔SQL 類型轉換。

總結

規範的 POJO + 精確的映射文件 = 穩健的 ORM 基石。掌握 <id> 生成策略、<property> 類型映射、命名慣例,能避開 80% 的配置坑。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved