<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-61  評論-159  文章-0  trackbacks-0

    hihernate一對多關聯映射(單向Classes----->Student)

    一對多關聯映射利用了多對一關聯映射原理

    多對一關聯映射:在多的一端加入一個外鍵指向一的一端,它維護的關系是多指向一
    一對多關聯映射:在多的一端加入一個外鍵指向一的一端,它維護的關系是一指向多

    也就是說一對多和多對一的映射策略是一樣的,只是站的角度不同

    在一一端維護關系的缺點:
     * 如果將t_student表里的classesid字段設置為非空,則無法保存
     * 因為不是在student這一端維護關系,所以student不知道是哪個班的,
       所以需要發出多余的update語句來更新關系

    例子:
            1、Classes的POJO類
    1public class Classes {
    2    private int id;
    3    private String name;
    4    private Set students;
    5//省略setter、getter方法
    6}
           2、Student的POJO類
    1public class Student {
    2    private int id;
    3    private String name;
    4//省略setter、getter方法
    5}
    3、Classes中的映射文件Classes.hbm.xml
     1<?xml version="1.0"?>
     2<!DOCTYPE hibernate-mapping PUBLIC 
     3    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     4    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     5<hibernate-mapping package="org.apple.hibernate">
     6    <class name="Classes" table="t_classes" >
     7        <id name="id">
     8            <generator class="native"/>
     9        </id>
    10        <property name="name"/>
    11        <set name="students">
    12            <key column="classesid"/>
    13            <one-to-many class="Student"/>
    14        </set>
    15    </class>
    16</hibernate-mapping>

    4、Student中的映射文件Student.hbm.xml
     1<?xml version="1.0"?>
     2<!DOCTYPE hibernate-mapping PUBLIC 
     3    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     4    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     5<hibernate-mapping>
     6    <class name="org.apple.hibernate.Student" table="t_student">
     7        <id name="id">
     8            <generator class="native"/>
     9        </id>
    10        <property name="name"/>
    11    </class>
    12</hibernate-mapping>

    5、測試方法:
     1import java.util.HashSet;
     2import java.util.Set;
     3import junit.framework.TestCase;
     4import org.hibernate.Session;
     5
     6public class One2Many1 extends TestCase {
     7    public void testSave(){
     8        Session session = null;
     9        try {
    10            session = HibernateUtil.getSession();
    11            session.beginTransaction();
    12            Student student = new Student();
    13            student.setName("張三");
    14            Student student1= new Student();
    15            student1.setName("李四");
    16            session.save(student);
    17            session.save(student1);
    18            Set students = new HashSet();
    19            students.add(student);
    20            students.add(student1);
    21            Classes classes = new Classes();
    22            classes.setName("計算機04-3");
    23            classes.setStudents(students);
    24            session.save(classes);
    25            session.beginTransaction().commit();
    26            
    27        }
     catch (Exception e) {
    28            e.printStackTrace();
    29            session.beginTransaction().rollback();
    30        }
    finally
    31        {
    32            session.close();
    33        }

    34    }

    35
    36}

    37

    6、控制臺輸出sql語句
    Hibernate: insert into t_student (name) values (?)
    Hibernate: insert into t_student (name) values (?)
    Hibernate: insert into t_classes (name) values (?)
    Hibernate: update t_student set classesid=? where id=?
    Hibernate: update t_student set classesid=? where id=?


    PS:后面兩條update語句是由于t_student表里面的classesid數據更新導致。

    -------------------------------------------------------------------------------------------------
    PS:本博客文章,如果沒有注明是有“轉”字樣,屬于本人原創。如果需要轉載,務必注明作者文章的詳細出處地址,否則不允許轉載,多謝合作!
    posted on 2008-10-11 13:37 apple0668 閱讀(638) 評論(0)  編輯  收藏 所屬分類: hibernate
    主站蜘蛛池模板: 亚洲日本香蕉视频| 亚洲白色白色永久观看| 久久久亚洲精华液精华液精华液| 亚洲精品免费在线视频| 亚洲视频一区在线| 131美女爱做免费毛片| 亚洲午夜在线一区| 在线视频免费观看www动漫| 亚洲国产乱码最新视频| 全免费一级午夜毛片| 亚洲欧美日韩久久精品| 亚洲av无码乱码在线观看野外 | 日韩精品福利片午夜免费观着| 亚洲中文无码av永久| 成年女性特黄午夜视频免费看| 亚洲综合成人婷婷五月网址| 国产成人在线观看免费网站| EEUSS影院WWW在线观看免费| 亚洲国产精品无码久久一区二区| 最近中文字幕无免费| 亚洲色大成WWW亚洲女子| 免费乱码中文字幕网站| 日本高清不卡aⅴ免费网站| 亚洲国产精品午夜电影| 日韩a在线观看免费观看| 国产免费一区二区三区免费视频| 久久国产亚洲电影天堂| 成人au免费视频影院| 五级黄18以上免费看| 久久精品国产精品亚洲毛片| 免费毛片在线视频| 中文字幕免费在线视频| 亚洲人成在线播放| 免费大片在线观看网站| 久久久精品2019免费观看 | 久久免费视频网站| 国产亚洲国产bv网站在线| 亚洲欧洲日产国码一级毛片| 中文字幕免费观看| 免费一级全黄少妇性色生活片| 亚洲精品国产成人99久久|