inverse和cascade的区别

inverse和cascade的区别

ID:8809538

大小:18.33 KB

页数:2页

时间:2018-04-08

inverse和cascade的区别_第1页
inverse和cascade的区别_第2页
资源描述:

《inverse和cascade的区别》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Inverse和cascade的区别实际上,他们是互不相关的概念:inverse是指的关联关系的控制方向,而cascade指的是层级之间的连锁操作。级联删除在默认情况下,当Hibernate删除一个持久化对象时,不会自动删除与他关联的其他持久化对象,如果希望Hibernate删除Customer对象时,自动删除和Customer关联的Order对象,可以把cascade的属性设置为delete。注意:在关联的双方的哪一方设置cascade为delete呢?是不是要在双方都要设置呢?这个主要看项目本身。如

2、果项目是针对一对多的,应该在“one”方设置cascade为delete,不能在“many”方设置cascade为delete。提示:所谓删除一个持久化对象,并不是指从内存中删除这个对象,而是从数据库中删除相关的记录。这个对象依然存在于内存中,只不过由持久化状态转变成为临时状态。cascade属性可以有多个值,中间用逗号分开,eg:cascade="save-update,delete<

3、keycolumn="c_id">Cascade属性的all-delete-orphan值当我们解除Customer和Order对象之间的关系时:customer.getOrdersa().remove(order);order.setCustomer(null);系统会执行updateordersetc_id=nullwhereid=?//前提:c_id列允许为null如果希望Hibernate

4、自动删除不再和Customer对象关联的Order对象,可以把cascade属性设置为all-delete-orphanall-delete-orphan值的总结1:当保存Customer对象时,级联保存所有关联的Order对象,相当于cascade=“save-update”2:当删除Customer对象时,级联删除所有关联的Order对象,相当于cascade=“delete”.3;删除不再和Customer对象关联的所有Order对象当关联双方存在父子关系时,就可以把父方的cascade属性设置为

5、“all-delete-orphan”]所谓父子关系,是指由父方子方的持久化生命周期,子方对象必须和一个父方对象关联如果删除父方对象,应该级联删除所有的关联的子方对象。如果子方对象不再和一个父方对象关联,应该把这个子方对象删除。类与类之间是否存在父子关系是由业务逻辑需求来决定的,通常认为Customer和Order之间存在父子关系,而Company和Worker之间不存在父子关系。食品类别---->蔬菜---水果蔬菜------->西红柿类别水果------->苹果----柿子上面的每种类别代表一个Ca

6、tegory对象,这些对象形成了树型数据结构,每个Category对象可以和一个父类别Category对象关联,同时还可以和一组子类别Category对象关联为了实现上面的图例,我们制作一Category类,为了表达双向关联关系,我们在Category类中定义两个属性:1:parentCategory:引用父类别的Category对象(比如苹果类别对象的parentCategory就是水果)2。childCategories:引用一组子类别Category对象现在相成的关系是一个Category对象可以

7、一个父Category对象关联(如水果类别对象有一个父类,而食品类别的父类是自身)一个Category对象可以和零个(如苹果类别对象没有子类)或一组子类Category对象关联(如水果类别对象有一组子类)数据库表方面,我们只提供了一个叫category的表,有三列ID:标识列,表示每一类别Name:类别的名字 ;category_id当前类别的父类别的id号,如果是顶级类别,如食品类别,category_id列的值自的OID。注意category_id列必须允许为null,否则在插入时,将丢出nullP

8、ointException异常     注意事项1:在category.hbm.xml中应该配置set的cascade属性值为all-delete-orphan,这样在删除一个父类别后,只要让他的所有子类别的对应的父类别为null,就可以方便的删除所有子类别。2:在OID中,在更新了两个类别之间的关系,并进行事务的提交后,必须调用session.clear()将session缓存进行清空,否则在以后用load()或get()加载的对象还是没

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。