hibernate 关联映射(一)----------one to many

本贴最后更新于 2371 天前,其中的信息可能已经时移世改

关联映射-one2many

单项多对一

05dd8b6f5c754d1396630f716b41a045.png

省略 get set

Dept:

public class Dept {

 private Byte deptNo;

 private String deptName;

 private String location;

}

Emp:

public class Emp {   

 private Integer empNo;

 private String empName;

 private Dept dept;

}

Emp.hbm.xml:

在多的一端使用 many-to-one 来映射多对一的关联关系
name:多的一端关联一的一端的属性名
class:一的一端属性对应的类名
column:一的一端在多的 一端对应的数据表中的外键的列(如果不写该属性则列名为属性名)

   <class name="cn.jbit.hibernatedemo.entity.Emp" table="emp">
        <id name="empNo" column="EMPNO" type="java.lang.Integer">
            <generator class="native"/>
        </id>
			//省略其他属性配置
        <many-to-one name="dept" column="DEPTNO"       
              class="cn.jbit.hibernatedemo.entity.Dept"  />
</class>

双向多对一

537a70cf3d1245e2ae202e8376d96e88.png
Dept.java:

public class Dept  {
    private Byte deptNo;
    private String deptName;
    private String location;
    private Set<Emp> emps = new HashSet<Emp>();
}

Emp.java:

public class Emp  {    
    private Integer empNo;
    private String empName;
    private Dept dept;
}

Emp.hbm.xml:与单向一致

Dept.hbm.xml:

映射一对多的集合属性使用 set 节点:
name:集合对应的属性名
table:set 中的元素对应的记录放在哪一个数据表中,该值需要和多对一的多的表名一致
key:指定多的表中的外键列的名字
one-to-many:指定映射类型

<class name="cn.jbit.hibernatedemo.entity.Dept" table="dept">
        <id name="deptNo" column="DEPTNO" type="java.lang.Byte">
            <generator class="assigned"/>
        </id>
        ......
        <set name="emps" table="emp">
        	<key column="DEPTNO"></key>
        	<one-to-many class="cn.jbit.hibernatedemo.entity.Emp"/>
        </set>
</class>

Hibernate.cfg.xml:

<mapping resource=_"cn/jbit/hibernatedemo/entity/Dept.hbm.xml"_/>

 <mapping resource=_"cn/jbit/hibernatedemo/entity/Emp.hbm.xml"_/>

set 的三个属性:

  • cascade(级联)
    1.none:当 Session 操纵当前对象时,忽略其他关联的对象。它是 cascade 属性的默认值
    2.save-update:当通过 Session 的 save()、update()及 saveOrUpdate()方法来保存或更新当前对象时。
    3.delete:当通过 Session 的 delete()方法删除当前对象时,会级联删除所有关联的对象。
    4.delete-orphan:删除孤儿。
    5.all:包含 save-update,delete 的行为。
  • inverse(反转)
    1.inverse 决定由双向关联哪一方来维护关联关系
    2.inverse 设置为 false,则为主动方,主动负责维护关联关系,默认是 false 。
    3.inverse 设置为 true,则为被动方,由多的一端负责维护关联关系。
    一般将一的一端设为 true,以使多的一方维护关联关系,有效减少 update 语句
  • order-by
    在查询时,对集合(set)中的元素进行排序,使用表的字段名,而不是属性名
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3167 引用 • 8207 回帖
  • private
    2 引用

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...