SSH框架之Hibernate的关联映射之一对多、多对一映射

关联映射之一对多、多对一映射

一、需求:
部门与员工
一个部门有多个员工 【一对多】
多个员工,属于一个部门 【多对一】

二、逻辑分析:
SSH框架之Hibernate的关联映射之一对多、多对一映射_第1张图片

三、代码实现
1、javabean及映射文件的配置:
1)Employee.java、Employee.hbm.xml
SSH框架之Hibernate的关联映射之一对多、多对一映射_第2张图片
2)Dept.java、Dept.hbm.xml
SSH框架之Hibernate的关联映射之一对多、多对一映射_第3张图片
完整的Dept.hbm.xml配置:


      

<hibernate-mapping package="sram.oneTomany" auto-import="true">  

   <class name="Dept" table="t_dept">
        <id name="deptId">
            <generator class="native">generator>
        id>
        <property name="deptName" length="20">property>
        
        <set name="emps" table="t_employee">
            
            <key column="dept_id">key>
            
            <one-to-many class="Employee"/>
        set>
   class>

hibernate-mapping>

2、测试类App1_save.java——实现保存的功能

package sram.oneToMany;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.junit.Test;

public class App1_save {
    public static SessionFactory sf;
    static{
        sf = new Configuration()
            .configure()
            .addClass(Dept.class)
            .addClass(Employee.class)//测试使用
            .buildSessionFactory();

1)部门方(一的一方操作)
SSH框架之Hibernate的关联映射之一对多、多对一映射_第4张图片
2)【推荐】员工方(多的一方操作)
SSH框架之Hibernate的关联映射之一对多、多对一映射_第5张图片

3、数据库结果:
1)员工表:
SSH框架之Hibernate的关联映射之一对多、多对一映射_第6张图片
2)部门表:
SSH框架之Hibernate的关联映射之一对多、多对一映射_第7张图片

4、测试类App2_get.java——实现保存的功能

package sram.oneToMany;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.junit.Test;

public class App1_save {
    public static SessionFactory sf;
    static{
        sf = new Configuration()
            .configure()
            .addClass(Dept.class)
            .addClass(Employee.class)//测试使用
            .buildSessionFactory();

1)通过部门方获取另一方:
SSH框架之Hibernate的关联映射之一对多、多对一映射_第8张图片
2)通过员工方获取另一方:
SSH框架之Hibernate的关联映射之一对多、多对一映射_第9张图片

四、总结:
1、在一对多与多对一的关联关系中,保存数据最好通过多的一方来维护关系,这样可以减少update语句的生成,从而提高hibernate的执行效率!

2、概念:
配置一对多与多对一,这种叫“双向关联”
只配置一对多,叫“单向一对多”
只配置多对一,叫“单向多对一”

3、注意:配置了哪一方,哪一方才有维护关联关系的权限!

你可能感兴趣的:(SSH框架之Hibernate的关联映射之一对多、多对一映射)