- 浏览: 2990028 次
- 性别:
- 来自: 河南
文章分类
- 全部博客 (340)
- Java综合 (26)
- 程序人生 (53)
- RIA-ExtJS专栏 (18)
- RIA-mxGraph专栏 (4)
- RIA-Flex4专栏 (43)
- 框架-Spring专栏 (16)
- 框架-持久化专栏 (22)
- 框架-Struts2专栏 (11)
- 框架-Struts专栏 (12)
- SQL/NOSQL (12)
- 报表/图表 (2)
- 工作流 (5)
- XML专栏 (4)
- 日常报错解决方案 (5)
- Web前端-综合 (12)
- Web/JSP (14)
- Web前端-ajax专栏 (14)
- Web前端-JQuery专栏 (9)
- IDE技巧 (6)
- FILE/IO (14)
- 远程服务调用 (2)
- SSO单点登录 (2)
- 资源分享 (22)
- 云计算 (1)
- 项目管理 (3)
- php专栏 (1)
- Python专栏 (2)
- Linux (1)
- 缓存系统 (1)
- 队列服务器 (1)
- 网络编程 (0)
- Node.js (1)
最新评论
-
hui1989106a:
我的也不能解压,360和好压都试了,都不行
《Spring in Action》完整中文版分享下载 -
temotemo:
这些example有些过时了,官方建议使用HBase-1.0 ...
Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询 -
zy8102:
非常感谢~
HeadFirst系列之七:《深入浅出SQL》原版高清PDF电子书分享下载 -
zy8102:
重命名了一下搞定了
HeadFirst系列之七:《深入浅出SQL》原版高清PDF电子书分享下载 -
zy8102:
为什么下载以后老解压不了呢?
HeadFirst系列之七:《深入浅出SQL》原版高清PDF电子书分享下载
Hibernate的集合属性映射简称集合映射
集合属性大致有两种:
第一种是单纯的集合属性,如像 List、Set 或数组等集合属性;
另一种是Map结构的集合属性,每个属性值都有对应的Key映射。
集合映射的元素大致有如下几种:
- List: 用于映射 List 集合属性
- Set: 用于映射 Set 集合属性
- Map: 用于映射 Map 集合性
- Array: 用于映射数组集合属性
- Bag: 用于映射无序集合【包括Collection和List】
- idbag: 用于映射无序集合,但为集合增加逻辑次序
Set 集合属性映射与 List 非常相似,但因为 Set 是无序的,不可重复的集合。因此 set 元素无须使用 index 元素来指定集合元素次序。
映射文件与 List 相似,区别在于使用 set 元素时,无须增加 index 列来保存集合的次序。如下映射文件:
package com.javacrazyer.domain;
import java.util.HashSet;
import java.util.Set;
/**
* 学生实体类 --> 按JavaBean的形式定义
*
*/
public class Student {
private int id; //OID 对象标识符
private String name;
//值类型的Set集合属性
//值类型:没有OID的类
//Hiberante框架要求集合属性必须定义成接口类型,在真正运行时Hibenrate会根据要求把实现类替换掉
private Set<String> hobbies = new HashSet<String>();
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set<String> getHobbies() {
return hobbies;
}
public void setHobbies(Set<String> hobbies) {
this.hobbies = hobbies;
}
@Override
public String toString(){
return "id=" + id + ",name=" + name;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.javacrazyer.domain.Student" table="student">
<id name="id" column="id">
<generator class="native"/>
</id>
<property name="name" column="name"/>
<!--这样就可以生成了两个表了,一个是上边的student,一个是stu_hobby-->
<set name="hobbies" table="stu_hobby" order-by="hobby_name desc">
<!--外键,命名是stu_id,引用自student表的主键-->
<key column="stu_id"/>
<element column="hobby_name" type="string"/>
</set>
</class>
</hibernate-mapping>
List是有序集合,因此持久化到数据库时也必须增加一列来表示集合元素的次序。看持久化类,该 Student.java类有个集合属性:hobbies ,该属性对应爱好。而集合属性只能以接口声明,因此代码中,hobbies 的类型能是List ,不能是ArrayList ,但该集合属性必须使用实现类完成初始化。【无论是种类型的集合属性都要遵守这个规定】
在作相应映射时,list元素要求用list-index的子元素来映射有序集合的次序列。集合的属性的值会存放有另外的表中,不可能与持久化类存储在同一个表内。因此须以外键关联,用Key元素来映射该外键列。
<list name="hobbies" table="stu_hob3">
<key column="stu_id"/>
<list-index column="posistion"/>
<element column="hobby_name" type="string"/>
</list>
3. bag 元素映射
【将student.java换成对应的List的或者Coollection的,比如:private Collection<String> hobbies = new ArrayList<String>();】
bag 元素既可以为 List 集合属性映射,也可以为 Collection 集合属性映射。不管是哪种集合属性,使用 bag 元素都将被映射成无序集合,而集合属性对应的表没有
<bag name="hobbies" table="stu_hob2">
<key column="stu_id"/>
<element column="hobby_name" type="string"/>
</bag>
Map 不公需要映射属性值,还需要映射属性 Key 。映射 Map 集合属性时,同样需要指定外键列,同时还必须指定 Map 的 Key 列。显然,系统将以外键列和 Key 列作为联合主键。
与所有集合属性类似,属性声明只能使用接口
<map name="hobbies" table="stu_hob5">
<key column="stu_id"/>
<map-key column="hob_id" type="string"/>
<element type="string" column="hob_name"/>
</map>
5. 集合性能的分析
对于集合属性,通常推荐使用延迟加载策略。所谓延迟加载就是当系统需要使用集合属性时才从数据库装载关联的数据。 Hibernate对集合属性默认采用延迟加载,在某些特殊的情况下为 set,,list,map 等元素设置lazy="false" 属性来取消延迟加载。
可将集合分成如下两类:
- 有序集合:集合里的元素 可以根据 Key 或 Index 访问
- 无序集合:集合里的元素中能遍历
有序集合的属性有增加、删除及修改中拥有较好的性能表现。在设计较好的 Hiberate domain Object 中,集合属性通常都会增加inverse="true" 的属性,此时集合端不再控制关联关系。映射 Set 集合属性时,如果 element 元素包括 not-null="true" 属性,则集合属性表以关联持久化类的外键和元素列作为联合主键,否则该表没有主键,但 List 集合属性的表总是以外键和元素次序列作为联合主键。
评论
发表评论
-
ibatis常用16条SQL语句
2011-07-29 11:08 26020(1) 输入参数为单个值 ... -
iBATIS与Hibernate的异同
2010-12-30 14:47 3664Hibernate Hibernate是一个开放源代 ... -
iBATIS与Spring整合
2010-12-30 14:34 4851接着iBATIS的入门实例来说,ibatis与Spring的 ... -
Hibernate温习(17)--OpenSessionInView模式
2010-11-11 17:04 4527在WEB应用程序中,视图(JSP或Servlet)可能会通过导 ... -
Hibernate温习(16)--性能优化之缓存管理
2010-11-11 16:02 17581.缓存概述 缓存(cache) ... -
Hibernate温习(15)--性能优化之抓取策略
2010-11-11 14:51 3489抓取策略(fetching strategy) 是指:当应 ... -
Hibernate温习(14)--性能优化之延迟加载机制
2010-11-11 11:33 1723延迟加载 延迟加载 ... -
Hibernate温习(13)--Hibernate程序性能优化的考虑要点
2010-11-11 10:55 1310本文依照HIBERNATE帮助文档,一些网络书籍及项目经 ... -
Hibernate温习(12)--基于注解方式的各种映射全面总结
2010-11-11 10:43 35691. 使用Hibernate Annotation来做对 ... -
Hibernate温习(11)--多事务并发访问控制
2010-11-11 10:25 7407在并发环境,一个数据库系统会同时为各种各样的客户程序 ... -
Hibernate温习(10)--应用程序中的事务管理
2010-11-11 09:26 1899事务的定义 事务就是指作为单个逻辑工作单元执行的一组数据操作 ... -
Hibernate温习(9)--有关Hibernate升级后注解方式的对象关系映射
2010-11-10 17:06 3301我要说的升级指的是我实际中遇到的,由于我之前的项目中Hiber ... -
Hibernate进行测试时时常会有的错误
2010-11-10 14:31 1450在hibernate程序中,如果使用JUNIT进行测试的话,第 ... -
Hibernate温习(8)--使用JPA
2010-11-10 11:00 2333这次讲的JPA前一篇文章都有所介绍,这里呢就是结合hibern ... -
Hibernate温习(7)--JPA回顾
2010-11-10 10:39 1944什么是JPA JPA(Java Pers ... -
Hibernate温习(6)--单向一对一外键关联映射
2010-11-05 10:24 2584hibernate一对一唯一外键关联映射(单向关联Citize ... -
Hibernate温习(3)--有关session的总结
2010-11-04 17:22 4209说到Hibernate那么最核心的就是它的有关数据库的增删改查 ... -
Hibernate温习(1)--最基础的示例
2010-11-04 14:22 3420有关Spring的知识大部分都已经温习完毕,今天开始转向Hib ... -
ibatis入门实例讲解
2010-10-25 10:39 12938之前大家上网的ibatis官方网站:http://www.i ... -
HIbernate温习(2)--连接池配置总结基于第三方c3p0和proxool
2010-07-26 14:42 3407一直都在用连接池技术,也是个好习惯,但用连接 ...
相关推荐
hibernate-commons-annotations-4.0.1.Final.jar hibernate-core-4.1.12.Final.jar hibernate-ehcache-4.1.12.Final.jar hibernate-entitymanager-4.1.12.Final.jar hibernate-jpa-2.0-api-1.0.1.Final.jar ...
赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...
赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...
hibernate-jpa-2.1-api-1.0.0.final-sources.jar 源码 hibernate-jpa-2.1-api-1.0.0.final-sources.jar 源码
很多人为了配置jpa找这个动态产生字节码的jar文件,hibernate-distribution-3.3.1.GA包太大,而hibernate-distribution-3.3.2.GA的jar没有这个jar文件,希望对大家有用
hibernate-jpa-2.0-api-1.0.1.Final.jar
hibernate-annotations-3.4.0.GA hibernate-annotations-3.4.0.GA hibernate-annotations-3.4.0.GA
hibernate-commons-annotations-5.0.1.Final.jar的源码
hibernate-jpa-2.1-api-1.0.0.final.jar.zip,内含hibernate-jpa-2.1-api-1.0.0.final.jar
hibernate-release-4.0.0.Final.zip
hibernate-release-4.3.10.Final.zip 官方原版,因上传文件大小限制,去掉里面的project
使用hibernate-validator 进行校验的jar包,里面包括了基础hibernate-validator-5.0.0.CR2.jar hibernate-validator-annotation-processor-5.0.0.CR2.jar 之外,还包括了el-api-2.2.jar javax.el-2.2.4等项目必不可...
hibernate-release-5.3.7.Final
hibernate-release-5.1.0.Final
hibernate-commons-annotations-4.0.1.Final.jar
Hibernate稳定版(hibernate-release-5.3.23.Final.zip),Hibernate ORM 是一个为应用程序、库和框架提供对象/关系映射 (ORM) 支持的库。它还提供了 JPA 规范的实现,这是 ORM 的标准 Java 规范。
hibernate-release-5.0.7.Final压缩包 -document -lib -project 内部Hibernate依赖库: antlr-2.7.7.jar dom4j-1.6.1.jar geronimo-jta_1.1_spec-1.1.1.jar hibernate-commons-annotations-5.0.1.Final.jar ...
hibernate-jpa-2.1-api-1.0.0.Final.jar官方下载,请放心使用
SSH框架hibernate开发包
hibernate-configuration-3.0.dtd、hibernate-mapping-3.0.dtd、hibernate.properties(5.0.7)