Hibernate一对多与多对一映射

首先我们要了解一下什么是一对多,多对一,多对多


部门与员工

  一个部门有多个员工;       【一对多】

  多个员工,属于一个部门    【多对一】


项目与开发员工

一个项目,有多个开发人员!

一个开发人员,参与多个项目!   【多对多】


我们使用一个小例子来学习一下

步骤一: 建立员工类与部门类




步骤二:配置相关映射文件

Dept.hbm.xml


Employee.hbm.xml



步骤三:配置hibernate.cfg.xml



步骤四:测试

public class App2 {
    private static SessionFactory sf;
    static{
    	sf=new Configuration()
    	.configure()
    	//.addClass(Dept.class)     <!-- 因为配置中加载了映射文件,所以这里先注释-->
    	//.addClass(Employee.class)
    	.buildSessionFactory();
    }
    @Test
    public void test1(){
    	Session session=sf.openSession();
    	session.beginTransaction();
    	Dept dept=new Dept();
    	dept.setDeptName("测试部2");
    	Employee emp_zs=new Employee();	
    	emp_zs.setEmpName("张三");
    	Employee emp_ls=new Employee();
    	emp_ls.setEmpName("李四");
    	
    	dept.getEmps().add(emp_zs);
    	dept.getEmps().add(emp_ls);
    	session.save(emp_zs);
    	session.save(emp_ls);
    	session.save(dept);  //保存部门,以及部门下所有员工
    	session.beginTransaction().commit();
    	session.close();
    	
    }
    
}


运行视图:




总结:

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

配置一对多与多对一,这种叫“双向关联”

只配置一对多,           叫“单项一对多”

只配置多对一,           叫“单项多对一”

 

注意:

配置了哪一方,哪一方才有维护关联关系的权限!


这里的配置指的是在配置文件中加入:

(一对多):


(多对一):


当配置的一方可以访问未配置的一方的数据:

示例:


通过部门查询员工




通过员工查询部门




未配置的一方不能访问另一方的数据:(这里将员工未进行配置,并进行通过员工查找部门操作)






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值