- 浏览: 427506 次
- 性别:
- 来自: 济南
文章分类
最新评论
-
wufeipeng2001:
结果呢?
数据源 -
ivan:
这样可以。jstl好傻。用grails没有这个问题。
jstl fn:replace替换换行符 -
396063616:
怎么解决的?
android学习之android.content.res.Resources$NotFoundException: File res/drawable/ -
Rinoajun:
多谢楼主,和你遇到了同样的问题
jstl fn:replace替换换行符 -
hellostory:
tanghanlin 写道这样也可以,在安装插件时,勾选:Co ...
eclipse报错Missing Constraint: Require-Bundle: org.eclipse.emf.transaction;
转载http://janwer.iteye.com/blog/136945
关键字: hibernate 集合映射
集合属性大致有两种:第一种是单纯的集合属性,如像 List、Set 或数组等集合属性;另一种是Map结构的集合属性,每个属性值都有对应的Key映射。
集合映射的元素大致有如下几种:
- List: 用于映射 List 集合属性
- Set: 用于映射 Set 集合属性
- Map: 用于映射 Map 集合性
- Array: 用于映射数组集合属性
- Bag: 用于映射无序集合
- idbag: 用于映射无序集合,但为集合增加逻辑次序
1. List 集合属性
List是有序集合,因此持久化到数据库时也必须增加一列来表示集合元素的次序。看下面的持久化类,该 News 类有个集合属性:schools ,该属性对应学校。而集合属性只能以接口声明,因此下面代码中,schools 的类型能是List ,不能是ArrayList ,但该集合属性必须使用实现类完成初始化。
- package cn.janwer;
- import java.io.Serializable;
- import java.util.ArrayList;
- import java.util.List;
- public class News implements Serializable {
- int id;
- String title;
- String content;
- private List schools = new ArrayList();
- public String getContent() {
- return content;
- }
- public void setContent(String content) {
- this .content = content;
- }
- public int getId() {
- return id;
- }
- public void setId( int id) {
- this .id = id;
- }
- public String getTitle() {
- return title;
- }
- public void setTitle(String title) {
- this .title = title;
- }
- public List getSchools() {
- return schools;
- }
- public void setSchools(List schools) {
- this .schools = schools;
- }
- }
package cn.janwer; import java.io.Serializable; import java.util.ArrayList; import java.util.List; public class News implements Serializable { int id; String title; String content; private List schools = new ArrayList(); public String getContent() { return content; } public void setContent(String content) { this .content = content; } public int getId() { return id; } public void setId( int id) { this .id = id; } public String getTitle() { return title; } public void setTitle(String title) { this .title = title; } public List getSchools() { return schools; } public void setSchools(List schools) { this .schools = schools; } }
在作相应映射时,list元素要求用list-index的子元素来映射有序集合的次序列。集合的属性的值会存放有另外的表中,不可能与持久化类存储在同一个表内。因此须以外键关联,用Key元素来映射该外键列。
下面是该持久化类的映射文件:
- <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="cn.janwer.News" table="news">
- <id name="id" column="pid">
- <generator class="identity"/>
- </id>
- <property name="title" length="50" column="TITLE"/>
- <property name="content" length="50" column="CONTENT"/>
- <list name="schools" table="school">
- <key column="pid" not-null="true"/>
- <list-index column="list_order" />
- <element type="string" column="school_name"/>
- </list>
- </class>
- </hibernate-mapping>
<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="cn.janwer.News" table="news"> <id name="id" column="pid"> <generator class="identity"/> </id> <property name="title" length="50" column="TITLE"/> <property name="content" length="50" column="CONTENT"/> <list name="schools" table="school"> <key column="pid" not-null="true"/> <list-index column="list_order" /> <element type="string" column="school_name"/> </list> </class> </hibernate-mapping>
2. Set 集合属性
Set 集合属性映射与 List 非常相似,但因为 Set 是无序的,不可重复的集合。因此 set 元素无须使用 index 元素来指定集合元素次序。
映射文件与 List 相似,区别在于使用 set 元素时,无须增加 index 列来保存集合的次序。如下映射文件:
- <set name="schools" table="school">
- <key column="pid" not-null="true"/>
- <element type="string" column="school_name" not-null="true"/>
- </set>
<set name="schools" table="school"> <key column="pid" not-null="true"/> <element type="string" column="school_name" not-null="true"/> </set>
3. bag 元素映射
bag 元素既可以为 List 集合属性映射,也可以为 Collection 集合属性映射。不管是哪种集合属性,使用 bag 元素都将被映射成无序集合,而集合属性对应的表没有
- <bag name="school" table="schools" >
- <key column="pid" not-null="true" />
- <element ype="string" column="school_name"/>
- </bag>
<bag name="school" table="schools" > <key column="pid" not-null="true" /> <element ype="string" column="school_name"/> </bag>
4. Map 集合属性
Map 不公需要映射属性值,还需要映射属性 Key 。映射 Map 集合属性时,同样需要指定外键列,同时还必须指定 Map 的 Key 列。显然,系统将以外键列和 Key 列作为联合主键。
与所有集合属性类似,属性声明只能使用接口,看下面的 POJO 类:
- private Map school=new HashMap();
- public Map getSchool() {
- return school;
- }
- public void setSchool(Map school) {
- this.school=school;
- }
private Map school=new HashMap(); public Map getSchool() { return school; } public void setSchool(Map school) { this.school=school; }
Map 集合属性使用 map 元素映射时,该 map 元素需要 key 和 map-key 两个子元素。其中 key 子元素用于映射外键列,而 map-key 子元素则用于映射 Map 集合的 Key 。映射文件如下:
- <map name="school" table="schools">
- <key column="pid" not-null="true" />
- <map-key type="string" column="indet"/>
- <element type="float" column="score"/>
- </map>
<map name="school" table="schools"> <key column="pid" not-null="true" /> <map-key type="string" column="indet"/> <element type="float" column="score"/> </map>
注意:map-key 和 element 元素都必须确定type属性
5. 集合性能的分析
对于集合属性,通常推荐使用延迟加载策略。所谓延迟加载就是当系统需要使用集合属性时才从数据库装载关联的数据。 Hibernate 对集合属性默认采用延迟加载,在某些特殊的情况下为 set,,list,map 等元素设置lazy="false" 属性来取消延迟加载。
可将集合分成如下两类:
- 有序集合:集合里的元素 可以根据 Key 或 Index 访问
- 无序集合:集合里的元素中能遍历
有序集合的属性有增加、删除及修改中拥有较好的性能表现。在设计较好的 Hiberate domain Object 中,集合属性通常都会增加 inverse="true" 的属性,此时集合端不再控制关联关系。映射 Set 集合属性时,如果 element 元素包括 not-null="true" 属性,则集合属性表以关联持久化类的外键和元素列作为联合主键,否则该表没有主键,但 List 集合属性的表总是以外键和元素次序列作为联合主键。
发表评论
-
导入jme3的Unknown data type: uint64_t
2012-07-17 17:44 1307今天使用blender编辑了一个场景导入到jme3的工程中,结 ... -
JDK1.3 中的本地绘制支持
2012-07-12 12:36 912转帖:http://www.sudu.cn/info/inde ... -
jdk-6u29 导致 tomcat 启动时卡死
2012-04-05 11:14 2004这几天tomcat在启动的时候来时在连接数据库的时候就停止了, ... -
eclipse查看jar对应的源代码
2012-03-16 11:16 1069在eclipse种关联jar文件对应的源代码的方法如下 右键 ... -
eclipse解析xml提示错误
2011-10-10 22:03 1790在代码种需要用到 import com.sun.org.ap ... -
eclipse学习点滴
2011-07-22 16:44 1068近一段事件在研究eclipse,记录点滴,防止忘记 1.带调 ... -
gef学习好去处
2011-07-02 22:33 929http://blog.csdn.net/evilinside ... -
GEF 请求和编辑策略
2011-07-02 21:59 1253近期打算做界面定义的 ... -
JPA的Hibernate实现的eclipse插件
2011-01-26 11:22 1494http://objectgeneration.com/upd ... -
Netbeans响应慢的原因
2011-01-06 21:42 1538转载:Netbeans响应慢的原因 现象:当 ... -
netbean 扩展的几个扩展点
2011-01-04 21:56 1013NbPreferences.forModule(RibbonL ... -
jboss 学习security
2010-12-25 23:01 1067jboss的安全控制主要包括了下面几个部分 <doma ... -
HornetQ 架构
2010-12-25 22:20 1647核心架构 HornetQ核心设计为多个POJO的集合,他一来 ... -
HornetQ 消息概念
2010-12-25 21:24 1903消息传递保证 大多数 ... -
JBoss将common下的lib放入classspath
2010-12-25 09:45 1348这几天在进行jboss下的开发,那的最小的容器本来想一点一点的 ... -
jboss学习 - vfs
2010-12-12 12:19 7362jboss的VFS是为了解决什么问题,他为什么有用呢 在jb ... -
jboss6 profile配置原理
2010-12-09 23:29 2316今天仔细分析了一下jbos ... -
Jboss5学习Deployment callbacks
2010-12-08 20:39 1254这个地方思维模式比较新颖,这里翻译一下: 有时候 ... -
jboss的bean声明周期名称
2010-12-08 18:03 967bean在解析到使用总共经过了如下的状态变化阶段 PreP ... -
jboss学习 - 程序生成配置代码分析
2010-12-08 14:13 1104以前使用spring已经习惯里,现在研究了一下jboss的微内 ...
相关推荐
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依赖信息文件:...
hibernate-jpa-2.1-api-1.0.0.final-sources.jar 源码 hibernate-jpa-2.1-api-1.0.0.final-sources.jar 源码
在本文中,我们将深入探讨`hibernate-commons-annotations-5.0.1.Final.jar`的源码,了解其内部结构和主要功能。 一、元数据注解 HCA的核心在于提供了一系列的注解,如`@Entity`、`@Table`、`@Column`、`@Id`等,...
hibernate-jpa-2.0-api-1.0.1.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final-sources.jar hibernate jpa 源代码
hibernate-jpa-2.1-api-1.0.0.Final.jar官方下载,请放心使用
### Hibernate中映射枚举类型 #### 概述 Hibernate是一种强大的对象关系映射(ORM)框架,它允许开发者以面向对象的方式操作数据库。在实际应用中,经常会遇到需要将Java中的枚举类型映射到数据库的情况。枚举类型...
hibernate-commons-annotations-4.0.1.Final.jar
hibernate-4.1.4-final-API.chm 方便实用,支持索引,提高工作效率 与大伙分享
java.lang.NoClassDefFoundError: javax/persistence/spi/ProviderUtil 或javax/persistence/entitylistener问题
《深入理解Hibernate-CGLIB-2.1_3在Java开发中的应用》 在Java开发领域,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。而CGLIB则是一个代码生成库,它允许开发者在运行时动态创建子类...
hibernate-commons-annotations-5.1.0.Final.jar
Hibernate稳定版(hibernate-release-5.3.23.Final.zip),Hibernate ORM 是一个为应用程序、库和框架提供对象/关系映射 (ORM) 支持的库。它还提供了 JPA 规范的实现,这是 ORM 的标准 Java 规范。
列如:hibernate-core-5.1.0.Final.jar hibernate-ehcache-5.1.0.Final.jar hibernate-entitymanager-5.1.0.Final.jar hibernate-envers-5.1.0.Final.jar hibernate-c3p0-5.1.0.Final.jar hibernate-jpa-2.1-api-...
Hibernate稳定版(hibernate-release-5.6.2.Final.zip),Hibernate ORM 是一个为应用程序、库和框架提供对象/关系映射 (ORM) 支持的库。它还提供了 JPA 规范的实现,这是 ORM 的标准 Java 规范。
《深入理解Hibernate配置与映射:hibernate-configuration-3.0.dtd与hibernate-mapping-3.0.dtd解析》 在Java世界里,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。而`hibernate-...
Hibernate稳定版(hibernate-release-5.4.32.Final.zip),Hibernate ORM 是一个为应用程序、库和框架提供对象/关系映射 (ORM) 支持的库。它还提供了 JPA 规范的实现,这是 ORM 的标准 Java 规范。
本篇文章将重点围绕“hibernate-jpa-2.1-api-1.0.0.final-sources.jar.zip”这一压缩包,深入解析Hibernate对JPA 2.1 API的实现,以期帮助读者深入理解其内部机制。 JPA(Java Persistence API)是Java平台上的一个...
javaEE框架Hibernate安装包 hibernate-release-5.0.7.Final