如,有两个对象。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繁杂的映射关联。
我所不清楚的:在性能上面,有没有什么区别(我是觉得没有什么太大性能区别,而且换成显示控制,还可以增加灵活性)?
求教