Hibernate的多對一關聯映射
1.關聯映射的本質:就是將關聯關系映射到數據庫中,關聯關系指對象模型中的一個或多個引用.
2.下面列舉多對一的示例:用戶和組(多個用戶屬于一個組)多對一關聯映射是最常用的一種關聯映射
?? *User 類
???package com.lzy
?? public class User{
?? private int id;
?? private String name;
? private Group group;//持有組的引用
???
?? public User(){};
?? //省略set,get方法
?}
? *Group類
?package com.lzy
?public class Group{
??
?? private int id;
?? private String name;
?? //省略get,set方法
?}
3.對對象進行關系映射,這也是Hibernate中比較難的一點。
? (1)User.hbm.xml
??????
??????<?xml version="1.0">
??????<!DOCTYPE?hibernate-mapping PUBLIC? "-//Hibernate/Hibernate Mapping DTD 3.0//EN" http://hibernate.sourceforge.net/hibernate-mapping-3.0
.dtd">
?? ? <hibernate-mapping package="com.lzy">
?????????<class name="User" table="t_user">
???????????????<id name="id" column="id">
?????????????????????<genarator class="native"/>
????????????? </id>
????????????<property name="name" column="user_name" not-null="true"/>
????????????<many-to-one name="group" column="groupid"/>
??????? </calss>
???? </hibernate-mapping>
?? (2)Group.hbm.xml
?????????
??????<?xml version="1.0">
??????<!DOCTYPE?hibernate-mapping PUBLIC? "-//Hibernate/Hibernate Mapping DTD 3.0//EN" http://hibernate.sourceforge.net/hibernate-mapping-3.0
.dtd">
?? ? <hibernate-mapping package="com.lzy">
?????????<class name="Group" table="t_group">
???????????????<id name="id" column="id">
?????????????????????<genarator class="native"/>
????????????? </id>
????????????<property name="name" column="group_name" not-null="true"/>
??????</class>
???</hibernate-mapping>
4.測試
public class? Test {
???
? public static void main(String args[]){
??????SessionFactory? sessionFactory=null;
????? Session? session=null;
????? Transaction?? transaction=null;
??????
??????sessionFactory = HibernateUtil.getSessionFactory();// 創建一個會話工廠
????? session = sessionFactory.openSession();// 創建一個會話實例
????? transaction = session.beginTransaction();// 申明一個事務
??User user= new User();
??Group?group = new Group();
??user.setName("龍一");
??group.setName("中南大學");
? user.setGroup(group);
??try {
???transaction.begin();
???session.save(user);
???transaction.commit();
??} catch (Exception e) {
???e.printStackTrace();
??}
?? }
}
posted on 2009-10-12 17:56 IT追求者 閱讀(1423) 評論(2) 編輯 收藏 所屬分類: hibernate