在 Hibernate 中,關聯映射的核心在於將物件模型中記憶體內的引用關係,轉化為資料庫層面的外鍵關係。<many-to-one> 元素正是實現「多對一」關聯的關鍵,它會在「多」的一方資料表中新增一個外鍵欄位,指向「一」的一方主鍵。
<many-to-one> 標籤的 column 屬性用於指定外鍵欄位名稱。若省略此屬性,Hibernate 會預設使用屬性名作為外鍵欄位名。典型定義範例:
<many-to-one name="group" column="groupid"/>
public class User {
private int id;
private String name;
private Group group; // 關聯到 Group 物件
// 省略 getter/setter
}
public class Group {
private int id;
private String name;
// 省略 getter/setter
}
<?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>
<?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>
cascade 屬性控制持久化操作傳播掌握多對一映射是建立複雜領域模型的基礎,合理設計關聯關係能顯著提升資料存取效能與程式碼可維護性。