<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
    主站蜘蛛池模板: 亚洲欧洲一区二区三区| 四虎1515hm免费国产| 久久综合日韩亚洲精品色| 9i9精品国产免费久久| 免费人成在线观看网站品爱网日本| 一本色道久久88亚洲精品综合| 永久免费av无码网站韩国毛片| 亚洲不卡1卡2卡三卡2021麻豆| 免费中文熟妇在线影片| 亚洲国产欧美日韩精品一区二区三区 | 亚洲gv猛男gv无码男同短文| 三年片在线观看免费大全电影| 亚洲综合在线视频| 3344永久在线观看视频免费首页| 久久久久久亚洲Av无码精品专口| 精品国产sm捆绑最大网免费站| 国内精品99亚洲免费高清| 久久精品亚洲综合| 久久成人国产精品免费软件| 亚洲欧美成人av在线观看| 亚洲第一福利网站在线观看| baoyu777永久免费视频| 亚洲嫩草影院久久精品| 男人的好免费观看在线视频| selaoban在线视频免费精品| 亚洲精品国产精品乱码不卡√| 精品福利一区二区三区免费视频 | 久久不见久久见中文字幕免费| jzzijzzij在线观看亚洲熟妇| 国产精品亚洲mnbav网站 | 亚洲美女人黄网成人女| 真实乱视频国产免费观看| jizz在线免费播放| 亚洲黑人嫩小videos| 国产精品免费播放| 无码人妻久久一区二区三区免费| 一本天堂ⅴ无码亚洲道久久| 国产亚洲精品a在线无码| 野花高清在线观看免费完整版中文 | 人人狠狠综合久久亚洲婷婷| 真人做A免费观看|