【Java】Hibernate(七)关联映射之多对一

阅读: 评论:0

【Java】Hibernate(七)关联映射之多对一

【Java】Hibernate(七)关联映射之多对一

【Many-to-one】 

       多对一关联映射是最常见的单向关联关系,多对一能够实现查“多”的一方的时候,也出现“一”的那一方。对象图形中,关联是有方向的,只能通过用户可以找到相应的组。关联图形中,因为加上了外键,所以可以从用户看到组,也可以从组看到用户。在多的一端加外键,指向一的一端。多对一的关系就体现在设置了外键。

                 

                                        

       在User一端写<many-to-one>标签,设置了外键,使用了级联属性以保持和更新的时候执行级联操作。

l 代码:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"".0.dtd">
<hibernate-mapping ><class name="com.bjpowernode.hibernate.User" table="t_user"><id name="id"><generator class="native"/></id><property name="name"/><!-- 多对一标签,设置外键,使用级联属性--!><many-to-one name="group" column="groupid" cascade="save-update"/></class>
</hibernate-mapping>


Many2OneTest 代码:

public void testSave1(){Session session=null;try{session&#Session();session.beginTransaction();Group group=new Group();group.setName("小组");session.save(group);//纳入session管理,group 就为持久状态,就可以保存数据了User user1 = new User();user1.setName("琪娅拉");user1.setGroup(group);User user2=new User();user2.setName("高孚");user2.setGroup(group);session.save(user1);session.save(user2);//可以正确的保存数据//因为Group和User都是Persistent状态的对象//所以在hibernate清理缓存时在session中可以找到关联对象Transaction()mit();}catch(Exception e){e.printStackTrace();Transaction().rollback();}finally{HibernateUtils.closeSession(session);}
}

        如果上面代码中不写 session.save(group); ,在hibernate清理缓存的时候就会抛出 TransientObjectException的错误。因为未保存的group是transient状态,在数据库中没有匹配的数据。而user是persistent状态,在清理缓存时hibernate在缓存中无法找到group对象,也就是persistent状态的对象不能引用transient状态的对象。


【级联属性 cascade】

       在多对一关系中比较常用的属性,比如很多商品同属于同一类。级联是指两个对象之间的操作联动关系,对一个对象执行了操作之后,对其指定的级联对象也需要执行相同的操作。级联是对象之间的连锁操作。级联影响的增加、删除 和修改,并不影响查询。影响增加、删除、 修改的意思,就是数据变动会级联变动,但不影响查询。
       我们需要在“多”的一端映射文件中设置级联属性。
       cascade取值的4种情况:
       all:代表在所有的情况下都执行级联操作
       none:在所有情况都不执行级联操作
       save-update:在保持和更新的时候执行级联操作。
       delete:在删除的时候执行级联操作。常用情况删除组的时候同时删除了组内成员。


【小结】

       多对一关联比较常见,涉及到的级联属性应用也比较多,希望可以给看官带来帮助,下篇多对多关联!

本文发布于:2024-02-01 03:29:05,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170672934733544.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:之多   Java   Hibernate
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23