- 浏览: 3008710 次
- 性别:
- 来自: 河南
文章分类
- 全部博客 (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 26090(1) 输入参数为单个值 ... -
iBATIS与Hibernate的异同
2010-12-30 14:47 3711Hibernate Hibernate是一个开放源代 ... -
iBATIS与Spring整合
2010-12-30 14:34 4879接着iBATIS的入门实例来说,ibatis与Spring的 ... -
Hibernate温习(17)--OpenSessionInView模式
2010-11-11 17:04 4564在WEB应用程序中,视图(JSP或Servlet)可能会通过导 ... -
Hibernate温习(16)--性能优化之缓存管理
2010-11-11 16:02 17801.缓存概述 缓存(cache) ... -
Hibernate温习(15)--性能优化之抓取策略
2010-11-11 14:51 3522抓取策略(fetching strategy) 是指:当应 ... -
Hibernate温习(14)--性能优化之延迟加载机制
2010-11-11 11:33 1775延迟加载 延迟加载 ... -
Hibernate温习(13)--Hibernate程序性能优化的考虑要点
2010-11-11 10:55 1340本文依照HIBERNATE帮助文档,一些网络书籍及项目经 ... -
Hibernate温习(12)--基于注解方式的各种映射全面总结
2010-11-11 10:43 36001. 使用Hibernate Annotation来做对 ... -
Hibernate温习(11)--多事务并发访问控制
2010-11-11 10:25 7437在并发环境,一个数据库系统会同时为各种各样的客户程序 ... -
Hibernate温习(10)--应用程序中的事务管理
2010-11-11 09:26 1938事务的定义 事务就是指作为单个逻辑工作单元执行的一组数据操作 ... -
Hibernate温习(9)--有关Hibernate升级后注解方式的对象关系映射
2010-11-10 17:06 3340我要说的升级指的是我实际中遇到的,由于我之前的项目中Hiber ... -
Hibernate进行测试时时常会有的错误
2010-11-10 14:31 1502在hibernate程序中,如果使用JUNIT进行测试的话,第 ... -
Hibernate温习(8)--使用JPA
2010-11-10 11:00 2381这次讲的JPA前一篇文章都有所介绍,这里呢就是结合hibern ... -
Hibernate温习(7)--JPA回顾
2010-11-10 10:39 1978什么是JPA JPA(Java Pers ... -
Hibernate温习(6)--单向一对一外键关联映射
2010-11-05 10:24 2616hibernate一对一唯一外键关联映射(单向关联Citize ... -
Hibernate温习(3)--有关session的总结
2010-11-04 17:22 4239说到Hibernate那么最核心的就是它的有关数据库的增删改查 ... -
Hibernate温习(1)--最基础的示例
2010-11-04 14:22 3453有关Spring的知识大部分都已经温习完毕,今天开始转向Hib ... -
ibatis入门实例讲解
2010-10-25 10:39 12993之前大家上网的ibatis官方网站:http://www.i ... -
HIbernate温习(2)--连接池配置总结基于第三方c3p0和proxool
2010-07-26 14:42 3443一直都在用连接池技术,也是个好习惯,但用连接 ...
相关推荐
《深入理解Hibernate配置与映射:hibernate-configuration-3.0.dtd与hibernate-mapping-3.0.dtd解析》 在Java世界里,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。而`hibernate-...
2. **库文件**:包含jar包,如hibernate-core.jar、hibernate-entitymanager.jar等,这些是我们在项目中引入Hibernate时需要用到的依赖库。 3. **文档**:通常包括用户指南、API文档、开发者文档等,这些文档提供了...
总结,`hibernate-commons-annotations-5.0.1.Final.jar`是Hibernate框架的重要组成部分,通过提供丰富的元数据注解,简化了Java对象与数据库之间的映射工作。对它的源码进行深入学习,不仅能够增强对JPA和Hibernate...
hibernate-jpa-2.0-api-1.0.1.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final-sources.jar hibernate jpa 源代码
Hibernate稳定版(hibernate-release-5.3.23.Final.zip),Hibernate ORM 是一个为应用程序、库和框架提供对象/关系映射 (ORM) 支持的库。它还提供了 JPA 规范的实现,这是 ORM 的标准 Java 规范。
5. **hibernate-c3p0**和**hibernate-ehcache**: 这两个是连接池和缓存服务的提供者,分别对应C3P0和Ehcache。它们用于优化数据库连接的获取和释放,以及缓存数据,提高性能。 6. **hibernate-commons-annotations*...
hibernate-commons-annotations-4.0.1.Final.jar
因为Hibernate在读出hbm.xml文件时需要通过网络读取到hibernate-mapping-3.0.dtd 文件。 如果没有网络不能正常工作。 所以提供上述文件。 以及hibernate-mapping-3.0.dtd,hibernate-configuration-3.0.dtd提供下载...
本次我们将深入探讨的版本是`hibernate-release-5.0.0.Final(1)`,这个版本在Hibernate的生命周期中具有重要的地位,它引入了多项新特性和改进,旨在提升开发效率和性能。 一、Hibernate概述 Hibernate是Java领域中...
Middlegen,作为`Middlegen-Hibernate-r5.zip`的主要内容,是针对Hibernate的一个实用工具,用于自动生成数据库模式到Java类的映射代码,极大地提高了开发效率。 1. Hibernate扩展: Hibernate扩展是开发者社区为...
7. **实体类与映射文件**:在Hibernate中,每个数据库表对应一个Java实体类,实体类的属性对应表的字段,而映射文件(如.hbm.xml)则定义了这些映射关系。Hibernate使用注解或XML文件来完成映射,使得Java对象可以...
而"hibernate-release-5.0.7.Final"目录则可能包含源码、文档、示例项目等,是深入学习和研究Hibernate的好材料。 总之,Hibernate 5.0.7.Final为Java开发带来了极大的便利,通过传智播客黑马程序员2016版的框架,...
《深入理解Hibernate-CGLIB-2.1_3在Java开发中的应用》 在Java开发领域,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。而CGLIB则是一个代码生成库,它允许开发者在运行时动态创建子类...
hibernate-mapping-3.0.dtd 最新从官网下载,无损无修改
《深入理解Hibernate-CGLIB-2.1_3在Java开发中的应用》 在Java开发领域,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。而CGLIB则是一个代码生成库,它允许开发者在运行时动态创建子类...
《hibernate-common-annotations.jar:Hibernate ORM框架中的核心注解库详解》 在Java世界里,ORM(Object-Relational Mapping)框架是连接数据库与应用程序的重要桥梁,而Hibernate作为其中的佼佼者,深受广大...
Hibernate稳定版(hibernate-release-5.6.2.Final.zip),Hibernate ORM 是一个为应用程序、库和框架提供对象/关系映射 (ORM) 支持的库。它还提供了 JPA 规范的实现,这是 ORM 的标准 Java 规范。
hibernate-configuration-3.0.dtd 文件,配置后 映射文件就会提示
hibernate-entitymanager-3.4.0.GA.rar hibernate-entitymanager-3.4.0.GA.rar hibernate-entitymanager-3.4.0.GA.rar hibernate-entitymanager-3.4.0.GA.rar hibernate-entitymanager-3.4.0.GA.rar hibernate-...