`

大家对hibernate 级联的必要性是怎么个看法

阅读更多

如,有两个对象。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繁杂的映射关联。

 

我所不清楚的:在性能上面,有没有什么区别(我是觉得没有什么太大性能区别,而且换成显示控制,还可以增加灵活性)?

求教

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics