- 浏览: 1195000 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (434)
- js (20)
- struts2 (77)
- spring (11)
- hibernate (17)
- ssh整合 (9)
- 程序例子 (4)
- 正则表达式 (8)
- JSP (20)
- IDE (15)
- 数据库 (10)
- 工作经验技巧感悟 (21)
- 程序员的幽默 (4)
- windows设置 (4)
- 名词解释 (4)
- 技术入门 (4)
- jFreeChart (16)
- OGNL (5)
- java基础 (46)
- dwr (4)
- portal (1)
- 示例用到的附件 (0)
- 优秀程序员45个习惯 (1)
- webService (1)
- shell (3)
- ibatis (3)
- 开发工具 (1)
- OS (3)
- xmlbean (2)
- design_pattern (0)
- error (1)
- testng (2)
- python (18)
- hadoop (21)
- mapreduce (9)
- Hive (0)
- HBase (0)
- ubuntu (22)
- 多线程 (7)
- 自我改进 (6)
- 设计模式 (1)
- ssh (2)
- ant (4)
- guake (2)
- 云计算 (9)
- hdfs (3)
- 大数据 (1)
- 电信业务 (1)
- maven (2)
- svn (5)
- UML (1)
- 待处理问题 (2)
- log4j (1)
- css (1)
- LevelDb (0)
- thrift (6)
- 辅助工具 (3)
- 算法 (1)
- tornado (0)
- twisted (1)
- jvm (0)
- 图书 (1)
- 其他 (1)
- oracle (2)
- mvn (1)
- 私人信息 (0)
- nio (1)
- zookeeper (1)
- JavaIO (3)
- mongodb (1)
- java-高级 (6)
- spring-深入 (1)
- tomcat (1)
- quartz (1)
- 面试题 (1)
- redis (3)
- EJBCA (0)
- spring-3.0 (1)
- memcache (3)
- 性能检测 (1)
- android (0)
- 开源项目 (1)
- 将博客搬至CSDN (0)
- 架构之路 (1)
最新评论
-
pjwqq:
“子类对象”都拥有了“父类对象的一个实例的引用”我晕,应该是“ ...
java继承--父类属性的存放位置 -
gwgyk:
关于楼主最后的问题,我想可能是这样:InputFormat默认 ...
eclipse 运行hadoop wordcount -
fanjf:
上述7点基本具备,可惜现在因为项目需要,做管理方面工作!
如何判断自己是否具有成为一名优秀程序员的潜质 -
摸爬滚打NO1:
链接已经失效
Eclipse添加JSEclipse 插件(js插件) -
younglibin:
看了以上7条, 自己 也不知道是否能够对上, 感觉没一点都有那 ...
如何判断自己是否具有成为一名优秀程序员的潜质
单向1——N关联关系的持久化类发生了改变,持久化类里需要使用集合,因为1的一端需要访问N的一端,而N的一端降一级和的形式出现:它只是将前边的用于集合映射的<element.../>元素改为<one-to-many.../>
属性:
- class:指定关联的实体类
- not-found:改属性只能是exception或ignore,指定当从记录参照的主表记录不存在时,hibernate如何处理;默认exception
单向的1——N关联关系:
只需要在1的实体类一端增加Set属性的setter,getter;
无连接表的单向1——N:
eg:
<!-- 映射集合属性,集合元素是其他持久化实体
没有指定cascade属性 -->
<set name="addresses">
<!-- 指定关联的外键列 -->
<key column="personId"/>
<!-- 用以映射到关联类属性 -->
<one-to-many class="Address"/>
</set>
有连接表的单向一对多:
对于有连接表的1——N,不是使用哪个one-to-many 而是使用many-to-many 为了保证当前实体的是 1 的一端,因此要用unique=“true”
eg:
<!-- 映射集合属性,集合元素是其他持久化实体
指定连接表的表名-->
<set name="addresses" table="person_address">
<!-- 指定连接表中参照本表记录的外键列名 -->
<key column="person_id" />
<!-- 使用many-to-many来映射1-N关联,
增加unique="true" -->
<many-to-many class="Address"
unique="true"/>
</set>
双向1——N关联:
对于1——N关联,hibernate推荐使用双向关联,而且不要让1的一端控制关联,使用N的一端控制关联关系;
双向的1——N和N——1是完全相同的两种形式;
两端都需要增加对关联属性的访问:
- N的一端增加引用到关联实体的属性;
- 1的一端增加集合属性;集合元素为关联实体;
eg:
Preson.java
//1-N关联关系,使用Set来保存关联实体
private Set<Address> addresses
= new HashSet<Address>();
Address.java
//保留关联实体的person属性
private Person person;
Preson.hbm.xml
<!-- 映射集合属性,集合元素是其他持久化实体
没有指定cascade属性 -->
<set name="addresses" inverse="true">
<!-- 指定关联的外键列 -->
<key column="person_id"/>
<!-- 用以映射到关联类属性 -->
<one-to-many class="Address"/>
</set>
Address.hbm.xml
<!-- 使用many-to-one映射N-1关联实体 -->
<many-to-one name="person"
column="person_id" not-null="true"/>
无连接表的双向1——N关联:
- N:的一端要增加<many-to-one......./>元素来影射关联属性;
- 1:的一端则需要使用<set../>或<bag../>元素来影射关联属性;在<set.../>或<bag.../>元素里需要增加<key.../>子元素映射外键列,并使用<one-to-many.../>子元素影射关联属性;
底层数据库记录了这种1——N关联关系,实际上只需要在N的一端的数据表里增加一个外键列即可,
这里存在一个问题:
双向映射时<many-to-one.../>元素将用到外键列,
<set.../>元素里的<key.../>子元素也用来映射外键列;
其他的都映射在同一列,所以映射文件应该为这两个元素指定的column属性,并让两个column属性值相同;
通常在多的一端控制关联关系,我们在<set.../>元素中设置 inverse=”true“
eg:
Preson.hbm.xml:
<!-- 映射集合属性,集合元素是其他持久化实体
没有指定cascade属性 -->
<set name="addresses" inverse="true">
<!-- 指定关联的外键列 -->
<key column="person_id"/>
<!-- 用以映射到关联类属性 -->
<one-to-many class="Address"/>
</set>
Address.hbm.xml:
<!-- 使用many-to-one映射N-1关联实体 -->
<many-to-one name="person"
column="person_id" not-null="true"/>
有连接表的双向1——N关联:
有连接表的1——N关联类似于N——N关联
- 1:的一端使用集合元素,然后在集合元素中添加<many-to-many../>子元素,盖子元素映射到关联表在<many-to-many../>中使用unique=”true“ ,在set元素里使用key和many-to-many两个元素,他们也映射连接表的两个列;
- N:的一端则使用<join ../>元素来强制使用连接表,使用key子元素来影射连接表中的外键,使用many-to-one来映射连接表中的关联实体的外键列;
保证join中的key子元素的column属性和set里many-to-many元素的column属性相同;
join里的many-to-one子元素的column属性和set里的key元素的column属性相同;
两端指定的连接表的Table属性不能省略,且属性值必须相同
eg: Preson.hbm.xml: <!-- 映射集合属性,集合元素是其他持久化实体
没有指定cascade属性 -->
<set name="addresses" inverse="true"
table="person_address">
<!-- 指定关联的外键列 -->
<key column="person_id"/>
<!-- 用以映射到关联类属性 -->
<many-to-many class="Address"
column="address_id" unique="true"/>
</set>
Address.hbm.xml:
<!-- 显式使用join元素确定连接表 -->
<join table="person_address">
<!-- key映射外键列 -->
<key column="address_id"/>
<!-- 使用many-to-one映射N-1关联实体 -->
<many-to-one name="person"
column="person_id" not-null="true"/>
</join>
发表评论
-
hibernate 无主键 多表连接 更新数据
2009-12-23 15:23 2212今天遇到一个问题: 客户给了我 3张表; 这三张表 分别是从 ... -
hibernate 没有id属性 怎么更新数据
2009-12-23 14:39 4001今天用hibernate 查了几个 ... -
Hibernate的各种保存方式的区别
2009-10-23 10:03 982hibernate对于对象的保存提供了太多的方法,他们之间有很 ... -
hibernate继承映射
2009-09-05 11:13 1964A、采用subclass元素的继承映射: 采用这种方 ... -
hibernate映射集合属性
2009-09-02 15:43 1477hibernate映射集合属性通 ... -
hibernate中控制Insert 和 Update 语句的映射属性
2009-08-31 09:36 2923控制Insert 和 Update 语句的映射属性<pr ... -
hibernate映射文件many-to-many元素属性
2009-08-31 08:50 2870N-----N column(可选): 这个元素的外键关键字 ... -
hibernate映射文件property 元素属性
2009-08-31 08:49 3167property 元素 name:映射类属性的名字 ... -
hibernate映射文件many-to-one 元素属性
2009-08-31 08:48 3747many-to-one 元素 属性: name ... -
hibernate映射文件one-to-one 元素属性
2009-08-31 08:47 5797one-to-one 元素 属性: name:映射类 ... -
hibernate映射文件set 元素属性
2009-08-31 08:46 1898set 元素 属性: name:映射类属性的名字 ac ... -
hibernate映射文件id元素属性详解
2009-08-31 08:45 1477id 元素 属性: name: ... -
hibernate映射文件一级子元素详解
2009-08-31 08:44 1542子元素: meta:设置类或属性的元数据属性 subsel ... -
hibernate映射文件class元素属性详解
2009-08-31 08:42 1809class元素 属性: name:持久化类的全名 ta ... -
hibernate映射文件一级子元素属性详解
2009-08-31 08:42 804一级子元素: meta:用于设置类或属性的元数据属性 ty ... -
hibernate映射文件根元素属性详解
2009-08-31 08:40 1140根元素hibernate-mapping 属性: sche ...
相关推荐
共有组合键属性的多对多(Many-to-many with shared composite key attribute) 23.4.4. Content based discrimination 23.4.5. Associations on alternate keys 24. 最佳实践(Best Practices) 表格清单 1. ...
共有组合键属性的多对多(Many-to-many with shared composite key attribute) 23.4.4. Content based discrimination 23.4.5. Associations on alternate keys 24. 最佳实践(Best Practices) 表格清单 1. ...
共有组合键属性的多对多(Many-to-many with shared composite key attribute) 23.4.4. Content based discrimination 23.4.5. Associations on alternate keys 24. 最佳实践(Best Practices) 表格清单 1. ...
共有组合键属性的多对多(Many-to-many with shared composite key attribute) 23.4.4. Content based discrimination 23.4.5. Associations on alternate keys 24. 最佳实践(Best Practices) 表格清单 1. ...
组合元素有个特别的用法是它可以包含一个<many-to-one>元素。类似这样的映射允许你将一个many-to-many关联表映射为组合元素的集合。(A mapping like this allows you to map extra columns of a many-to-many ...
目录 ... 共有组合键属性的多对多(Many-to-many with shared composite key attribute) 23.4.4. Content based discrimination 23.4.5. Associations on alternate keys 24. 最佳实践(Best Practices)
共有组合键属性的多对多(Many-to-many with shared composite key attribute) 23.4.4. Content based discrimination 23.4.5. Associations on alternate keys 24. 最佳实践(Best Practices) 等等。。。
6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 三重关联...
一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联,涉及...
22.2. 双向的一对多关系(Bidirectional one-to-many) 22.3. 级联生命周期(Cascading lifecycle) 22.4. 级联与未保存值(Cascades and unsaved-value) 22.5. 结论 23. 示例:Weblog 应用程序 23.1. 持久化类 ...
一对多关联(One-to-many Associations) 7.3. 高级集合映射(Advanced collection mappings) 7.3.1. 有序集合(Sorted collections) 7.3.2. 双向关联(Bidirectional associations) 7.3.3. 三重关联...
22.2. 双向的一对多关系(Bidirectional one-to-many) 22.3. 级联生命周期(Cascading lifecycle) 22.4. 级联与未保存值(Cascades and unsaved-value) 22.5. 结论 23. 示例:Weblog 应用程序 23.1. 持久化类 ...
6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 三重关联...
多对一(Many-to-One) 使用@ManyToOne批注来实现多对一关联。 @ManyToOne批注有一个名为targetEntity的参数,该参数定义了目标实体名,通常不需要定义该参数,因为在大部分情况下默认值(表示关联关系的属性类型)就...
7.2.5. 一对多关联(One-to-many Associations) 7.3. 高级集合映射(Advanced collection mappings) 7.3.1. 有序集合(Sorted collections) 7.3.2. 双向关联(Bidirectional associations) 7.3.3. 三重关联...
6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联,...
hibernate 3中的缓存小结 2.2. 一级缓存的管理: 当应用程序调用Session的save()、update()、savaeOrUpdate()、get()或... <one-to-many class="org.qiujy.domain.cachedemo.Product"/> </hibernate-mapping>
7.1.1 [many-to-one]元素的not-null属性 153 7.1.2 级联保存和更新 155 7.2 映射一对多双向关联关系 156 7.2.1 [set]元素的inverse属性 161 7.2.2 级联删除 163 7.2.3 父子关系 164 7.3 映射一对多双向自身...
7.1.1 [many-to-one]元素的not-null属性 153 7.1.2 级联保存和更新 155 7.2 映射一对多双向关联关系 156 7.2.1 [set]元素的inverse属性 161 7.2.2 级联删除 163 7.2.3 父子关系 164 7.3 映射一对多双向自身...
1.1.3. 映射文件 ........................................................ 4 1.1.4. Hibernate 配置 .................................................. 7 1.1.5. 用 Maven 构建 ................................