您的位置:首页 > 其它

传智播客Hibernate视频教程学习笔记25

2009-08-06 11:20 197 查看
集合类型的使用:

之前用的都是set来保存一对多关系,Hibernate提供了不止一种的映射方法,比如list bag map等等,下面简要介绍就可以了

list:

<list name="epys">
<key column="dpt_id"></key>
<list-index column="order_col"></list-index>
<one-to-many class="Employee"/>
</list>


只要将Department.hbm.xml中员工集合的映射改为list映射,并在测试代码中均改成list即可,可以发现,多设定了list-index,对应的列是order_col,在数据库表中会自动生成order_col一列来保存添加对象的顺序,比如在内存中部门员工列表先添加了Employee1,Employee2,那么在数据库表中也会照着这个顺序记录下来1, 2,反之,则是 2,1。

很多时候这种添加的顺序是毫无意义的,Bag与Set不同的地方是允许重复元素,而与list不同的是没有记录添加顺序的那一列字段。bag与java中的list容器对应,配置文件如下:

<bag name="epys">
<key column="dpt_id" />
<element column="Employee"/>
</bag>


基本与set一样。

还有就是Map了,也比较常用。

<map name="epys">
<key column="dpt_id" />
<map-key type="string" colum="name"/>
<element column="Employee"/>
</bag>


通过map-key来制定map的key,value即为Employee类型,即Map<String,Employee>。注意的是这边Employee的name属性必须为unique,因为map的key是唯一的。

还有一点比较重要的是在设计pojo的时候,必须使用接口来声明这些容器,比如说是用Set,不可以在pojo中声明HashSet,因为Hibernate自己实现了一套Set容器,使用Set的时候,Hibernate实际使用了自己写的PersistSet,功能比set强大许多。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: