ssh学习:hibernate中 集合属性的操作

hibernate中对集合属性的操作

在hibernate中,持久化对象中不仅仅有基本数据类型与类类型的属性,也有List,Map,Set,collection等集合属性。但是在这些属性使用中,最好使用的是接口。

Set集合操作:

配置:在Xxx.hbm.xml中<set></set>中配置相关的属性

在<set></set>中常用的标签属性与子元素:

name属性:持久化对象中的set属性的属性名对应

table属性:新建保存该set集合数据的数据表名

key:子元素:在数据库总保存set数据的key/id

element子元素:保存set属性的数据标签,同长都要设置type类型

例子:

<!-- 配置set属 :name值为持久化类中的set的属性名 ,table为保存set的表名 -->
		<set name="students" table="stus">
			<!-- 外键 -->
			<key column="stu_id"></key>
			<!-- set保存对象的数据元素,必须指明数据的类型且字符串要用小写 -->
			<element column="students" type="string"></element>
		</set>

 配置接收之后就可以像一般简单的持久化对象类一样操作数据库了。

List集合操作:

List集合操作与set的操作基本一致。在Xxx.hbm.xml文件中配置了<list></list>标签

<list></list>标签常用的属性与子元素:

name属性:持久化对象中的List属性的属性名对应

table属性:新建保存该集合数据的数据表名

key:子元素:在数据库总保存list数据的key/id

element子元素:保存list属性的数据标签,同长都要设置type类型

list-index:子元素:保存在list的属性保存数据的下标索引

Xxx.hbm.xml文件配置List标签实例

<!-- 配置list属性。name为持久化对象的属性名 table为保存该属性数据的表名 -->
		<list name="hobbys" table="hobbys_list">
			<key column="hobbys_id"></key>
			<!-- 索引 -->
			<list-index column="position"></list-index>
			<!-- 报list属性的数据字段 需要制定类型 -->
			<element type="string" column="hobbys"></element>
		</list>

 Collection集合的操作:

Collection集合属性在hibernate中的操作也是跟set等操作基本一致。在Xxx.hbm.xml中以<bag></bag>获取是<idbag></idbag>标签中配置。两者标签都能配置Collection属性,但是还是会不一样的。

主要的区别:使用<bag></bag>标签时候,在使用hibernate修改Collection属性的表时候,会吧所用数据先删除,在添加不该删除的元素。而<idbag></idbag>则不会

Collection的常用属性与子元素:

name属性:持久化对象中的set属性的属性名对应

table属性:新建保存该set集合数据的数据表名

key:子元素:在数据库总保存set数据的key/id

element子元素:保存set属性的数据标签,同长都要设置type类型

 Collection_id子元素:只能用于<idbag></idbag>标签。添加Collection属性表的id

Xxx.hbm.xml中的配置实例:

<bag>

<bag name="hobby" table="hobby_collection_bag">
			<key column="hobby_id_bag"></key>
			<element type="string" column="hobbys"></element>
		</bag>

 <idbag>

<idbag name="hobby" table="hobby_collection">
			<collection-id type="string" column="ho_id">
				<generator class="uuid"></generator>
			</collection-id>
			<key column="hobby_id"></key>
			<element type="string" column="hobby"></element>
		</idbag>

 Map集合的操作:

map属性使用也没有多大的差别,在Xxx.hbm.xml中,使用<map></map>标签配置

<map></map>的常用属性与子元素:

name属性:持久化对象中的map属性的属性名对应

table属性:新建保存该map集合数据的数据表名

key:子元素:在数据库总保存set数据的key/id

element子元素:保存map属性的数据标签,同长都要设置type类型

map-key子元素:map中保存数据的key

Xxx.hbm.xml配置实例:

<map name="hobby" table="hobby_map">
			<key column="name"></key>
			<map-key column="hobby_mapkey" type="string"></map-key>
			<element column="hobby" type="string"></element>
		</map>

 

如果,集合封装的对象是自定义的javabean对象,则是把上面的<element></element>标签换成<one-to-many></one-to-many>在class属性中指定类类名时候,填写的是全路径即可

相关推荐