Hibernate双向关联中常常用Set 而不用List
来源:互联网 发布:设计师渲染软件 编辑:程序博客网 时间:2024/04/29 19:36
对于一对多关联当中的List,需要在数据库里面维护一个index列,如果List当中的某个元素被删除,那么Hibernate会连续发送多条 update语句,更新后续所有元素的index列,以确保index的连续性(在inverse为false的情况下),如果你选择自己维护index 列,也同样会面临这个问题,甚至更棘手(在inverse为true的情况下),所以List被谨慎的使用在极其罕见的场合。
一般来说,我(Robbin)会选择在1对关联当中使用Bag,在多对多关联当中使用Set。
不要误会了robbin所说的话,他所说的要特别慎用list是指的hibernate映射文件中的list类型,而不是实体类中的List类型。映射文件中用Bag类型,在实体类中是可以对应List的。
至于说排序,List(Bag映射)和Set都是可以排序的,hibernate有自己的Set、List、Map实现,其内部根据使用的排序方式使用java.util中的各种不排序的或排序的集合实现类。
Set映射有两种排序方式,一是使用映射文件中的sort属性,一般需要自己实现一个java.util.Comparator,sort属性指定 自己实现的比较类,hibernate返回给客户的实际是Set的TreeSet实现,将该比较类作为treeSet的比较器,这种排序是在内存中进行的,可以在比较器中按实体类的某个字段排序或实现更复杂的排序方法,非常灵活,但是要自己实现比较器,麻烦一些。
另一种方法是使用映射中的order-by属性,可以指定表中的一个排序字段,排序是在数据库中进行的,hibernate返回是LinkedHashSet实现,可以保持对象的前后次序。- Hibernate双向关联中常常用Set 而不用List
- 为什么Hibernate的OneToMany用Set集合而不用list
- 【学习笔记】Hibernate中多对多不用List而用Set的原因分析
- Hibernate双向关联配置用set与bag的总结
- hibernate一对多双向关联中怎么配置list
- Hibernate one2many 双向关联
- hibernate关联映射-双向
- hibernate双向关联注意
- Hibernate一对一双向关联
- hibernate 一对一双向关联
- Hibernate一对一双向关联
- hibernate configration 双向关联
- Hibernate 双向一对一关联
- Hibernate一对一双向关联
- Hibernate 双向关联
- Hibernate一对多双向关联
- Hibernate 一对多外键双向关联
- Hibernate 一对一主键双向关联
- CUDA安装全过程
- Linux系统信息查看命令大全
- sqlite3.7.7.1在Windows下编译成功
- sql server 2005触发器介绍
- code reading by gtags and m4 step zero
- Hibernate双向关联中常常用Set 而不用List
- listview上分页的跳转和设置大小。
- 敏捷开发“松结对编程”实践之六:大型团队篇|后记(大型研发团队,学习型团队,139团队,师徒制度,人员招聘,职业生涯规划)
- visual studio 2010 express的几个配置问题
- 鸟在路上跑久了
- Dojo Widget 中DOM事件的初始化和销毁
- 中断和异常
- 马步站桩
- 25个Apache性能优化技巧推荐