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,当然语义上说就是值名对。
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,当然语义上说就是值名对。
相关文章推荐
- 实现多点触控图片缩放
- nodejs定义函数的方法
- 自定义IOC
- Burpsuite 重要插件
- php htmlentities()函数的定义和用法
- excel解析工具类
- JavaWeb学习总结(五十三)——Web应用中使用JavaMail发送邮件
- Android checkBox,类似这个控件。
- Python2.7注意点汇总(函数式编程)
- Android 中 Handler 引起的内存泄露 在Android常用编程中,Handler在进行异步操作并处理返回结果时经常被使用。其实这可能导致内存泄露,代码中哪里可能导致内存泄露,又是如何
- 【Android】获取app的打包时间
- 新浪微博:史上最大的Redis集群
- VideoView播放本地、网络视频及其监听
- UIAlertView的按钮颜色设置
- iOS 正则表达式
- Unity3D地形引擎指南
- 一天的工作从填坑开始
- Java Web JavaMail 邮件发送
- 多款Notepad++实用插件
- 关于ORM框架的简单使用