ITPub博客

首页 > IT职业 > IT职场 > hibernate中一对多为什么映射成set而不是list

hibernate中一对多为什么映射成set而不是list

IT职场 作者:flow_water 时间:2021-09-09 08:57:55 0 删除 编辑

比如如下代码:

  1. #  /** 
  2. #      * 用户信息 
  3. #      */   
  4. #     @OneToMany(cascade=CascadeType.ALL,fetch = FetchType.LAZY)   
  5. #     @JoinColumn(name = "comId")   
  6. #     private Set users = new HashSet();    

<!-- list -->

  1. #  /** 
  2. #      * 用户信息 
  3. #      */   
  4. #     @OneToMany(cascade=CascadeType.ALL,fetch = FetchType.LAZY)   
  5. #     @JoinColumn(name = "comId")   
  6. #     private List users = new ArrayList();    

解释:
首先,你要清楚List和Set的区别:List是有序和可重复;Set是无序,但是不能重复.
其次,在一对多关联中.想象一下这种情况:你要更新从表记录;
从List中得到从表的一个对象引用,然后你对这样对象修改后,又放回List,你的List中就包括两个从表对象的引用.你在保存时,这两个引用,你觉得会保存两次还是一次?
而如果是Set,你得到从表对象的引用,之后修改从表对象的内容,你再往Set里面放,Set里面因为已经有这个从表对象的引用,就不会再给里面加.这样,你的Set里面还是只有一个从表对象的引用.这样你保存,这个从表对象只保存一次

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1052/viewspace-2798277/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: zip和zip64的区别
请登录后发表评论 登录
全部评论

注册时间:2019-04-15

  • 博文量
    74
  • 访问量
    618