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属性中指定类类名时候,填写的是全路径即可
相关推荐
1,对于集合属性,默认是lazy="true"的,在第一次使用时才加载。 2,但在加载时,如果Session已经关掉了就会抛LazyInitializationException异常 二,集成 Spring 与 Struts2.1.8.1 1,在web.xml配置监听器...
五、 简单属性的注入 11 六、 Bean的作用范围scope 12 七、 集合注入 12 八、 自动装配autowire 13 (一) byName 13 (二) byType 14 (三) 注意 14 九、 生命周期 15 (一) lazy-init/default-lazy-init 15 (二) init-...
五、 简单属性的注入 11 六、 Bean的作用范围scope 12 七、 集合注入 12 八、 自动装配autowire 13 (一) byName 13 (二) byType 14 (三) 注意 14 九、 生命周期 15 (一) lazy-init/default-lazy-init 15 (二) init-...
4.3.12 hibernate的集合映射 266 4.4 小结 270 第5章 hibernate 3持久化技术实践与性能优化 271 5.1 操作持久化对象的常用方法介绍 271 5.1.1 使用session的begintransaction()方法 272 5.1.2 使用session的...
第1篇为技能学习篇,主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e技术入门、Hibernate高级应用...
{12.11}集合操作}{165}{section.12.11} {12.11.1}union}{166}{subsection.12.11.1} {12.11.2}intersect与minus}{166}{subsection.12.11.2} {12.11.3}join}{166}{subsection.12.11.3} {12.11.3.1}cross join}{...
71.8. Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系) 60 71.9. 说下Hibernate的缓存机制 60 71.10. Hibernate的查询方式 60 71.11. 如何优化Hibernate? 61 71.12. Hibernate和spring中常出现的几个...
94、元素有一个cascade属性,如果希望Hibernate级联保存集合中的对象,casecade属性应该取什么值?(单选)(D) 22 95、以下哪些属于Session的方法?(A,B,C,D,F) 22 96、Hibernate工作原理及为什么要用? 22 97、...
94、元素有一个cascade属性,如果希望Hibernate级联保存集合中的对象,casecade属性应该取什么值?(单选)(D) 22 95、以下哪些属于Session的方法?(A,B,C,D,F) 22 96、Hibernate工作原理及为什么要用? 22 97、...
16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 123 17.介绍一下Hibernate的二级缓存 123 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message ...
10.5.8 使用Map集合记录关联实体 423 10.5.9 对关联实体进行排序 424 10.6 继承关系映射 426 10.6.1 整个类层次对应一张表的 映射策略 427 10.6.2 连接子类的映射策略 430 10.6.3 每个具体类对应一张表的 映射策略 ...
Spring的Ioc Spring的AOP , AspectJ Spring的...属性的注入(Spring 表达式):.....................................................................................25 1.4.4 集合属性的注入:........................