集合类型的使用:
之前用的都是set来保存一对多关系,Hibernate提供了不止一种的映射方法,比如list bag map等等,下面简要介绍就可以了
list:
只要将Department.hbm.xml中员工集合的映射改为list映射,并在测试代码中均改成list即可,可以发现,多设定了list-index,对应的列是order_col,在数据库表中会自动生成order_col一列来保存添加对象的顺序,比如在内存中部门员工列表先添加了Employee1,Employee2,那么在数据库表中也会照着这个顺序记录下来1, 2,反之,则是 2,1。
很多时候这种添加的顺序是毫无意义的,Bag与Set不同的地方是允许重复元素,而与list不同的是没有记录添加顺序的那一列字段。bag与java中的list容器对应,配置文件如下:
基本与set一样。
还有就是Map了,也比较常用。
通过map-key来制定map的key,value即为Employee类型,即Map<String,Employee>。注意的是这边Employee的name属性必须为unique,因为map的key是唯一的。
还有一点比较重要的是在设计pojo的时候,必须使用接口来声明这些容器,比如说是用Set,不可以在pojo中声明HashSet,因为Hibernate自己实现了一套Set容器,使用Set的时候,Hibernate实际使用了自己写的PersistSet,功能比set强大许多。