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

Hibernate 多對一關聯映射完整指南

     編輯:Java 相關知識

在 Hibernate 中,關聯映射的核心在於將物件模型中記憶體內的引用關係,轉化為資料庫層面的外鍵關係。<many-to-one> 元素正是實現「多對一」關聯的關鍵,它會在「多」的一方資料表中新增一個外鍵欄位,指向「一」的一方主鍵。

核心配置解析

<many-to-one> 標籤的 column 屬性用於指定外鍵欄位名稱。若省略此屬性,Hibernate 會預設使用屬性名作為外鍵欄位名。典型定義範例:

<many-to-one name="group" column="groupid"/>

實體類別設計

User 類別(多方)

public class User {
    private int id;
    private String name;
    private Group group;  // 關聯到 Group 物件
    // 省略 getter/setter
}

Group 類別(一方)

public class Group {
    private int id;
    private String name;
    // 省略 getter/setter
}

映射檔案配置

User.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "https://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="com.example.hibernate.User" table="t_user">
        <id name="id">
            <generator class="native"/>
        </id>
        <property name="name"/>
        <many-to-one name="group" column="groupid"/>
    </class>
</hibernate-mapping>

Group.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "https://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="com.example.hibernate.Group" table="t_group">
        <id name="id">
            <generator class="native"/>
        </id>
        <property name="name"/>
    </class>
</hibernate-mapping>

關鍵要點總結

  • 單向關聯:此範例示範單向多對一,User 端持有 Group 參考,Group 端不知 User 存在
  • 外鍵維護:由「多」的一方負責維護外鍵值
  • 延遲載入:預設啟用 lazy loading,存取 group 物件時才發出 SQL 查詢
  • 級聯操作:可透過 cascade 屬性控制持久化操作傳播

掌握多對一映射是建立複雜領域模型的基礎,合理設計關聯關係能顯著提升資料存取效能與程式碼可維護性。

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