级联删除就很简单了,把cascade属性设置为delete,如果你删除了一个客户,程序就会先执行删除这个客户全部的订单的SQL语句,然后在删除这个客户,所谓删除一个持久化对象不是在内存中删除这个对象,而是删除数据库中相关的记录,这个对象依然在内存中,只不过由持久化状态转为临时状态,当这个对象的引用消失后,这个对象会被垃圾回收.但是如果我又想级联删除,还想级联保存,更新的时候应该怎么办呢?这个时候我们将cascade属性设置为all-delete-orphan就OK了.非常简单明了.我们还可以通过持久化类的customer.getOrder().rumove(order);解除关联.这里的操作表示获得客户订单的集合对象,然后从集合对象中删除order的订单,其实这种操作的意义不大,当我们不需要的这个订单的时候完全可以删除它,解除关联之后如果设置了级联删除属性,这个无用的记录也是要被删除的.其实解除关联就是把外键设为null.通常我们的外键都要约束不可以为空.
映射关联还有一种多对多的关联,是一种自身关联关系.就是同一张表.自己和自己的关联.比如说一张人表,地球人是人,美国人,中国人,日本人都属于地球人,中国人有分北京人,山东人.日本人也有下一级的比如东京人.下面设想如果日本人被消灭掉了,那么东京人也应该都被没有了吧,这就是一种关系,自身对自身的关联关系.这就有点类似树的结构了.下面用一个例子演示这种关系,代码来源于孙MM的<<精通Hibernate>>一书.
public class Category implements Serializable {
private Long id;
private String name;
private Category parentCategory;
private Set childCategories;
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- Hibernate原理与配置 (370篇文章)
- Hibernate高级特性 (64篇文章)
- Hibernate相关文章 (370篇文章)
- Java基础知识:初学者必须理解的六大问题 (76次浏览)
- 九个非常值得一看的MySpace程序 (72次浏览)
- 微软企业级平台呼之欲出 英雄由“此”诞生 (66次浏览)
- Java基础知识:谈谈简单Hibernate入门 (58次浏览)
- struts验证框架开发详解 (48次浏览)
- Java入门-浅析Java学习从入门到精通 (47次浏览)
- 关于提高自己水平的十大技术 (47次浏览)
- Flex测试工具RIATest Beta版发布 (45次浏览)
- 100行Java代码构建一个线程池。 (40次浏览)
- 成为Java高手的25个学习目标 (38次浏览)



