hibernate基础------》关系映射---》many2one和one2many的区别

本文通过苹果树与苹果的关系实例,深入浅出地解释了一对多(one2many)与多对一(many2one)的概念及应用场景,并通过代码示例展示了这两种关系在实际开发中的实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        many2one和one2many其实没什么差别,最大的不同就是站在不同的角度而已
    例如:one2many视角:一棵苹果树有很多苹果,这是一对多关系(站在树的角度上看)
          many2one视角:许多苹果在一棵苹果树上,这是多对一关系(站在苹果的角度上看)
          
    代码分析需求
    1.    PO类
        苹果树
        private int id;
        private String name;
        private Set<fruit> fruit=new HashSet<fruit>();
        
        配置
        <set name="fruit" >
            <key column="t_f_id"></key>
            <one-to-many class="fruit"/>
        </set>
        
        苹果
        private int id;
        private String name;
        private Tree tree=new Tree();
        
        配置
        <many-to-one name="tree" class="Tree" column="t_f_id" cascade="all"></many-to-one>
        
    2.    运行类(one2many和many2one在po上并没有什么不同,他们的区别表现在运行类上)
    
        fruit f1 = new fruit();
        f1.setName("苹果1");
        fruit f2 = new fruit();
        f2.setName("苹果2");
        
        Tree t = new Tree();
        t.setName("苹果树");
        

        //注意此处是高能区:这里也是多对一重要体现,f2.setTree(t);苹果包含苹果树,这就是站在苹果视角上看(多包涵一),反过来如果一对多:t.getfruit.add(f1);苹果树包含苹果,那么就是一包含多;其实实际就是谁是控制类而已---》多为控制类则多对一,一为控制类则一对多,控制类的表现就在于集合为  控制类.add(被控制类)   非集合  控制类.set被控制类(被控制类值);

        f2.setTree(t);
        f1.setTree(t);
    
        session.save(f1);
        session.save(f2);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值