hibernate中的集合

来源:互联网 发布:侯景之乱 知乎 编辑:程序博客网 时间:2024/06/07 20:53

一,set 

set集合是最常用的集合,也是配置最简单的集合,set集合里面是不可以放重复的对象

二,list

对于list集合,和set集合的最大的区别是list里面的对象进行了排序,对于list的映射文件这样写:

dep: 

private Integer depId;

private String depName;

private List<Emp> empList;

映射文件:

<class name="Dep" table="dep">

<id name="depId" column="dep_id">

<generator class="native"/>

</id>

<property name="depName" column="dep_name"/>

<list name="empList">

<key column="dep_id"/>

<!--这里的列名是属于hibernate,在java类中没有相对应的字段,这个字段名是可以随便取的,会出现在数据库中-->

<!--其他的地方都跟set相同,只是多了个list-index column这里为了记录对象的顺序的,使得list里面的数据有顺序-->

<list-index column="order_col"/>  <!--主要是这里增加了一个排序的字段-->

<one-to-many class="hwt.pojo.Emp"/>

</list>

</class>

Bag

bag集合和list是一样的,只是bag集合不会有顺序,也没有一个像list中的list-index的字段,映射文件中的bag是属于hibernate的专有,java中是没有的,所以在pojo类中,要用list集合接收,bag是和list想对应的

pojo:

private Integer depId;

private String depName;

private List<Emp> empList; //bag要对应list集合

映射文件;

<bag name="empList">

<key column="dep_id"/><!-- 外键,数据库的列名 -->

<one-to-many class="hwt.pojo.Emp"/>

</bag>

对于bag里面的配置和set里面的的配置一样的,bag不进行排序,里面可以放重复数据

Map

pojo类中:private Map<Integer, Emp> map ;

映射文件:

<class name="Dep" table="dep" dynamic-update="true" dynamic-insert="true">

<id name="depId" column="dep_id">

<generator class="native"/>

</id>

<property name="depName" column="dep_name"/>

<map name="map">

<key column="dep_id"/><!-- 外键,数据库的列名 -->

<!-- 这里就是map集合的特有,是map的键 -->

<map-key type="java.lang.Integer" column="emp_id"></map-key>

<one-to-many class="hwt.pojo.Emp"/>

</map>

</class>

对于集合的使用,一般用的最多的是set集合 , 如果要想对其有插入的顺序,那么就可以使用list 集合,但是要增加一个排序的字段,如果不想排序,只是想嫩够放重复的数据,那么可以使用bag,bag不会产生一个多的字段,对于map和数组就用的比较少,map集合是一种键值对的形式,在映射文件中要配置一个<map-key type="" column=""/> 来指明键

原创粉丝点击