Hibernate的多對(duì)一關(guān)聯(lián)映射
1.關(guān)聯(lián)映射的本質(zhì):就是將關(guān)聯(lián)關(guān)系映射到數(shù)據(jù)庫(kù)中,關(guān)聯(lián)關(guān)系指對(duì)象模型中的一個(gè)或多個(gè)引用.
2.下面列舉多對(duì)一的示例:用戶和組(多個(gè)用戶屬于一個(gè)組)多對(duì)一關(guān)聯(lián)映射是最常用的一種關(guān)聯(lián)映射
?? *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.對(duì)對(duì)象進(jìn)行關(guān)系映射,這也是Hibernate中比較難的一點(diǎn)。
? (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.測(cè)試
public class? Test {
???
? public static void main(String args[]){
??????SessionFactory? sessionFactory=null;
????? Session? session=null;
????? Transaction?? transaction=null;
??????
??????sessionFactory = HibernateUtil.getSessionFactory();// 創(chuàng)建一個(gè)會(huì)話工廠
????? session = sessionFactory.openSession();// 創(chuàng)建一個(gè)會(huì)話實(shí)例
????? transaction = session.beginTransaction();// 申明一個(gè)事務(wù)
??User user= new User();
??Group?group = new Group();
??user.setName("龍一");
??group.setName("中南大學(xué)");
? user.setGroup(group);
??try {
???transaction.begin();
???session.save(user);
???transaction.commit();
??} catch (Exception e) {
???e.printStackTrace();
??}
?? }
}
posted on 2009-10-12 17:56 IT追求者 閱讀(1425) 評(píng)論(2) 編輯 收藏 所屬分類: hibernate