您的位置:首页 > 其它

hibernate多对多,多对一映射时用set,bag,list,array时有什么区别?

2016-05-13 10:29 323 查看
简单的说,这些集合类除了bag,都有其对应的JDK中接口的语义。它们都可以表示一对多或多对多。

Set对应于java.util.Set接口,表示一个没有重复元素的集合。

怎样区别重复元素?这就涉及到对象的同一性。我们知道在数据库中,我们用主键来区分每一条记录,在Java的对象世界中,我们是用Object.equals()方法来区分是否是等价的对象。

set保证,在这个集合中,没有重复的对象。即,没有任何对象之间用equals比较返回true。如果我们正确地覆盖了entity类中的equals方法,我们就能保证在set映射中,set没有重复对象。

bag没有对应语义的JDK接口,它对应的是java.util.Collection接口,它表示一个可以有重复元素的集合。

list对应JDK的java.util.List接口,可以有重复元素。

array对应对象数组,Hibernate也不建议使用。

除了上面的集合类,还有一个map映射,对应java.util.Map,当然语义上说就是值名对。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: