如,有两个对象。User,Order(一个人可以有多个订单).那么这个是一对多关系。在建立ORM时:
1 user 实体(类伪码):
@Entity @Table(name="t_user") public class User{ @Id @Column(name="id") private String id; @Column(name="username") private String username; @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "user") private Set<Order> orders; }
2 order 实体(类伪码):
@Entity @Table(name="t_order") public class Order{ @Id @Column(name="id") private String id; @Column(name="name") private String name; @ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH},fetch = FetchType.LAZY) @JoinColumn(name = "user_id") private User user; }
现在在考虑红字部分的必要性:
a 删除第一部分
b 第二部分,不级联,直接映射数据库的字段。@Column(name="user_id") private String userId;
我所知道的它的好处:
1 当获取User对象后,可以直接点取Order对象;
2 对应的级联特性;
对于这两点:
都可以通过显示增加代码量来完成。而且实际上,代码量并不是很多。
可以避免hibernate繁杂的映射关联。
我所不清楚的:在性能上面,有没有什么区别(我是觉得没有什么太大性能区别,而且换成显示控制,还可以增加灵活性)?
求教
相关推荐
Hibernate级联操作一对多demo Hibernate级联操作一对多demo Hibernate级联操作一对多demo
Hibernate的级联操作(增,删,该)
Hibernate 一对多、多对一、级联、加载、反转
包括t_card主表和t_person从表,实现基于session和hql的hibernate级联增删改查;
Hibernate级联操作.docx
hibernate 级联(cascade和inverse)一对多,Jar包,数据库建表语句都好了,只要修改一下,数据库配置文件,就可以使用了,使用junit进行测试。
NULL 博文链接:https://hw1287789687.iteye.com/blog/2247386
hibernate many-to-many级联保存,级联更新,级联删除
虽然Hibernate不怎么流行了不过有兴趣的可以看看
关于Hibernate级联删除的问题.doc
inverse Hibernate_级联关系说明_-_关于cascade和inverse的用法
第七章_Hibernate_-_级联策略 第七章
3.3、Hibernate级联关系(Av839011656,P3).mp4
用hibernate做的省市县三级级联,很具体,包你一看就会,其中包含ajax局部刷新;省市县所有数据台湾省的数据不全面,其他都配好了,只需要你整合一下即可运行。
Ajax+struts+hibernate实现级联菜单 Ajax+struts+hibernate实现级联菜单 Ajax+struts+hibernate实现级联菜单
hibernate3.2级联关系自身一对多双向关联,适合初学者熟悉hibernate框架。
Hibernate cascade (级联).docHibernate_cascade(级联).doc
Spring+Hibernate 框架整合写的一对一映射级联增删改查小例子,有SQL文件和使用说明,代码简洁易懂.
struts+hibernate+ajax级联菜单struts+hibernate+ajax级联菜单