2011-6-25 关联关系、集合映射
(一)One2one:
1) 主对象不存在,从对象是没有办法保存的
2) 可以单独对主对象保存时可以的
3) 查询主对象时会用连接表一次性查询出两种表的记录,与多对一【2次查询】不同;查询从对象时,现查从对象,然后再用连接表
4) Hibernate只依赖于映射文件进行工作的
(二)效率问题
多对多,一对多在效率上有问题:如果多的一端,数据量很多,不要采用,数据量小的时候才采用;多对一用的多
(三)集合映射set和list区别
Set:没有次序,不允许重复
List:有序,允许重复,会在库中新增一列来记住插入的顺序,取出的顺序和插入的一样;顺序没有什么意义,采用bag 不会有多余的列,不会保证顺序,在javabean中对应的是list
(四)集合选择
绝大部门采用set,配置简单,不允许重复满足需要;如果保证顺序,采用list,绝大部门不需要保存顺序,如果想采用list有不需保证顺序就用bag(在java中用list,配置文件中用bag);map使用较少,看是否需要键值对的方式;数据对增加、减少元素不方便【数据越界,尺寸自己掌握】
注意:在java中定义集合时采用Set,List等接口,因为hibernate重写了java集合类,可以实现懒加载【继承了Set等集合类】
(五)级联 cascade【两个对象间的关系时】
Cascade一般取值为“save-update”,当要选delete要慎重;在many2many和many2one中不设置级联,在one2one和one2many中设置
问题:1 级联保存的效率怎么样?