Hibernate全面採用面向對象思維操作資料庫。本文講解多對一單向關聯映射——最基礎且常用的關聯類型。
用戶與用戶組:一個用戶屬於一個組,一個組擁有多用戶 → 用戶:組 = 多:1。

public class Group {
private int id; private String name; // getter/setter...
}
public class User {
private int id; private String name;
private Group group; // 多端持有單端引用
// getter/setter...
}
標準MySQL配置,映射資源指向Tables.hbm.xml。
<hibernate-mapping>
<class name="com.bjpowernode.hibernate.User" table="t_user">
<id name="id"><generator class="native"/></id>
<property name="name"/>
<!-- many-to-one:自動在t_user建外鍵groupid映射t_group.id -->
<many-to-one name="group" column="groupid" cascade="save-update"/>
</class>
<class name="com.bjpowernode.hibernate.Group" table="t_group">
<id name="id"><generator class="native"/></id>
<property name="name"/>
</class>
</hibernate-mapping>
cascade="save-update":保存/更新用戶時自動級聯保存/更新關聯組。

public class Many2OneTest extends TestCase {
public void testSave3() {
Session session = HibernateUtils.getSession();
session.beginTransaction();
Group group = new Group(); group.setName("提高班");
User user1 = new User(); user1.setName("張三"); user1.setGroup(group);
User user2 = new User(); user2.setName("李四"); user2.setGroup(group);
// 配置many-to-one後,無需手動 session.save(group)
session.save(user1); session.save(user2);
session.getTransaction().commit();
}
}
執行結果:

many-to-one配置後:
groupid這正是Hibernate魅力所在:關係由框架自動維護,開發者專注業務邏輯。