hibernate映射文件中的集合的映射有:map、list、array、set、bag、idbag。
如下是它们的关系:
集合类型 | 有索引 | 允许重复值 | 可添加或移除 |
map | √ | × | √ |
list | √ | √ | √ |
array | √ | √ | × |
set | × | × | √ |
bag | × | √ | √ |
idbag | √ | × | √ |
当inverse="true"时,集合不维护对应关系,则insert、update、delete操作对其性能无影响。但在是用反向集合添加元素的时候会有区别,则是用允许重复值且可添加或移除的集合类型会更高效,如:list、bag。因为当子元素不需判断唯一,集合添加元素的操作不需要把整个集合取回来进行判断。
当inverse="false"时,集合维护对应关系,会出现以下几种操作的情况:
insert: 有索引且不允许重复值的集合类型性能最高(map,idbag),其次是无索引但不允许重复值的集合(set),允许重复值的集合类型最慢(list,bag)。
update: 有索引且不允许重复值的集合类型性能最高(map,idbag),其次是无索引但不允许重复值的集合(set),允许重复值的集合类型最慢(list,bag,array)。
delete: 有索引且不允许重复值的集合类型性能最高(map,idbag),其次是无索引但不允许重复值的集合(set),允许重复值的集合类型最慢(list,bag)。