谁玩手机玩游戏怎么录视频视频游戏比较多些,有什么NB经验么

Hibernate关系映射文件一对一配置,一对多配置,多对多配置实例-SSH教程-ab蓝学网
Hibernate关系映射文件一对一配置,一对多配置,多对多配置实例
简介:java教程|Hibernate关系映射1.关联映射概念:关联映射,就是将关联关系映射到数据库中,所谓的关联关系,在对象模型中,就是一个或多个引用分类:(1)多对一关联映射many-to-one多对一关联映射原理:...
Hibernate关系映射
&&& 1.关联映射
&&& 概念:关联映射,就是将关联关系映射到数据库中,所谓的关联关系,在对象模型中,就是一个或多个引用
&&& 分类:
&&& (1)多对一关联映射
&&& many-to-one
&&& 多对一关联映射原理:在多的一端加入一个外键,指向一的一端
&&& 在多的一端采用如下标签映射:
&&& &many-to-one name=&group& column=&groupId&/&
&&& (2)一对一关联映射
&&& one-to-one
&&& A主键关联:即让两个对象具有相同的主键值,以表明它们之间的一一对应的关系;数据库表不会有额外的字段来维护它们之间的关系,仅通过表的主键来关联
&&& 示例1:
&&& hibernate一对一主键关联映射(单向关联Person---&IdCard)
&&& 一对一关联映射原理:让两个实体的主键一样,这样就不需要加入多余的字段了(扩展性不好)
&&& &class name=&com.ys.hibernate.Person& table=&t_person&&
&&& &id name=&id&&
&&& &!-- 采用foreign生成策略,会取得关联对象的标识 --&
&&& &generator class=&foreign&&
&&& &!-- property指关联对象 --&
&&& &param name=&property&&idCard&/param&
&&& &/generator&
&&& &property name=&name& /&
&&& one-to-one指示hibernate如何加载其关联对象,默认根据主键加载
&&& 也就是拿到关系字段值,根据对端的主键来加载关联对象
&&& constrained=&true&表示,当前主键(Person的主键)还是一个外键
&&& 参照了对端的主键(IdCard的主键),也就是会生成外键约束语句
&&& &one-to-one name=&idCard& constrained=&true& /&
&&& &/class&
&&& 示例2:
&&& hibernate一对一主键关联映射(双向关联Person&---&IdCard)
&&& 需要在IdCard加入&one-to-one&标签,
&&& 指示hibernate将关联对象Person根据主键加载上来
&&& &one-to-one&不影响存储,只影响加载
&&& &one-to-one&标签fetch属性默认为&join&.
&&& B唯一外键关联:外键关联,本来是用于多对一的配置,但是如果加上唯一的限制之后,也可以用来表示一对一关联关系
&&& 示例1:
&&& hibernate一对一唯一外键关联映射(单向关联Person---&IdCard)
&&& 一对一唯一外键关联映射,其实是多对一的特例
&&& 采用&many-to-one&标签来映射,指定多的一端unique为true,
&&& 这样就限制了多的一端的多重性为一,就是这样来映射的。
&&& &many-to-one name=&idCard& unique=&true&/&
&&& hibernate一对一唯一外键关联映射(双向关联Person&---&IdCard)
&&& 一对一唯一外键关联双向,采用&one-to-one&标签映射,
&&& 必须指定&one-to-one&标签中的property-ref属性为关系字段的名称
&&& &one-to-one name=&person& property-ref=&idCard&/&
&&& (3)一对多关联映射
&&& one-to-many
&&& 示例1:
&&& hibernate一对多关联映射(单向Classes---&Student)
&&& 一对多和多对一的映射原理是一样的,都是在多的一端加入一个外键指向一的一端
&&& 它们的区别在于维护的关系不同:
&&& *多对一维护的关系:多指向一的关系,如果维护了多指向一的关系,那么加载多的时候会把一加载上来
&&& *一对多维护的关系:一指向多的关系,如果维护了一指向多的关系,那么加载一的时候会把多加载上来
&&& 在一的一端维护关系存在缺陷:
&&& *因为多的一端Student不知道Classes的存在(也就是Student没有维护与Classes的关系)
&&& 所以在保存Student的时候关系字段classesId是为null的,如果将该字段设置为非空,则将无法保存数据
&&& *另外因为Student不维护关系,而Classes维护关系,Classes就会发出多余的update语句,保证Classes和Student有关系,这样加载Classes的时候才能把该Classes对应的学生集合加载上
&&& &set name=&students&&
&&& &key column=&classesId& not-null=&true&/&--保存不成功
&&& &key column=&classesId& /&--会发出多余的update语句来维持关系
&&& &one-to-many class=&com.ys.hibernate.Student& /&
&&& &/set&
&&& 示例2:
&&& hibernate一对多关联映射(双向Classes&---&Student)
&&& 采用一对多双向关联映射的目的主要是为了解决一对多单向关联的缺陷
&&& 而不是需求驱动的
&&& 一对多双向关联的映射方式:
&&& *在一的一端的集合上采用&key&标签,在多的一端加入一个外键
&&& *在多的一端采用&many-to-one&标签
&&& &many-to-one name=&classes& column=&classesId& /&
&&& !!!注意:
&&& &key&标签和&many-to-one&标签加入的字段保持一致,否则会产生数据混乱
&&& (4)多对多关联映射
&&& many-to-many
&&& 示例1:
&&& hibernate多对多关联映射(单向User---&Role)
&&& 具体映射:
&&& &set name=&roles& table=&t_user_role&&
&&& &key column=&user_id& /&
&&& &many-to-many class=&com.ys.hibernate.Role& column=&role_id& /&
&&& &/set&
&&& 把第三张表也抽取出一个类出来,使用两个many-to-one来完成
&&& 示例2:
&&& hibernate多对多关联映射(双向User&---&Role)
&&& 具体映射:
&&& &set name=&roles& table=&t_user_role&&
&&& &key column=&user_id& /&
&&& &many-to-many class=&com.ys.hibernate.Role& column=&role_id& /&
&&& &/set&
&&& 需要注意:
&&& *生成的中间表名称必须一样
&&& *生成的中间表中的字段必须一样
转载注明本文地址:
上一编:下一编:-------------
新增文件夹...
新增文件夹
(多个标签用逗号分隔)
Hibernate一对多、多对多关联映射(经典).doc
加载中...!如果长时间没有加载,请刷新页面
下载本文档需要登录,并付出相应积分()。
文件大小:243.00 KB
所需积分:& 15
相关资讯  — 
相关讨论话题  — 
浏览:2787次&& 下载:2次
上传时间: 12:10:55
同类热门文档
0次浏览 &20次下载
20870次浏览 &28次下载
16677次浏览 &26次下载
16732次浏览 &14次下载
0次浏览 &1次下载
3276次浏览 &3次下载
相关经验 -
& 1人评&50页
& 0人评&0页
& 0人评&4页
& 0人评&13页
& 2人评&53页
OPEN-OPEN, all rights reserved.hibernate中的关联映射图解 ---- 一对多
hibernate中的关联映射图解 ---- 一对多

&&&&&&& hibernate中的关联映射图解 ---- 一对多
&&&&&&&&&&&
一对多关联映射利用了多对一关联映射原理:
多对一关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是多指向一。
一对多关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是一指向多。
总结:由上可以看出,一对多和多对一的映射策略是一样的,只是站的角度不同,维护关系方不同罢了。
java文件:
hbm.xml文件:
测试代码:
相对于上面的单向,只需要修改Student端
java文件:
hbm.xml文件:
注意:在一对多的双向关联关系映射中,我们一般会将关联关系维护权交由多的一方来维护,所以我们需要在一的一方加入关系翻转的属性,如下
一对多双向关联映射:
&&&&&1. 在一的一端的集合上使用&key&,在对方表中加入一个外键指向一的一端。
&&&&&2. 在多的一端采用&many-to-one&
注意:&key&标签指定的外键字段必须和&many-to-one&指定的外键字段一致,否则引用字段会出错,如果在一的一端维护一对多关联关系,hibernate会发出多于的update语句,所以我们一般在多的一端来维护关联关系。
inverse属性:
&&&&&&&&inverse主要用在一对多和多对多双向关联关系上,inverse可以被设置到集合标签&set&上,默认inverse为false,所以我们可以从一的一端和多的一端来维护关联关系,如果设置inverse为true,则我们只能从多的一端来维护关联关系,注意:inverse属性只影响数据的存储,也就是持久化,加载没有影响。
inverse和casccade
&&&&&&&1. inverse是关联关系的控制方向。
&&&&&&&2. cascade是操作上的连锁反应。
我的热门文章
即使是一小步也想与你分享查看:2435|回复:3
初级工程师
public class Group { “一”的一端
------------------------------------------------------
public class Person { “多”的一端
------------------------------------------------------
&hibernate-mapping package=&com.zw.wllt&& 一的一端的配置映射
&class name=&Group& table=&t_group&&
&id name=&id&&
&generator class=&native& /&
&property name=&name& /&
&set name=&person&&
&key column=&groupid&/&
&one-to-many class=&Group&/&
&/hibernate-mapping&
-------------------------------------------------------
&hibernate-mapping package=&com.zw.wllt&& 多的一端配置映射
&class name=&Person& table=&t_person&&
&id name=&id&&
&generator class=&native& /&
&property name=&name& /&
&many-to-one name=&group& column=&groupid&/&
&/hibernate-mapping&
----------------------------------------------------------
出现的问题是:在多的一端生成的表中会出现一个groupid字段,在一的一端是不会出现的,但是问题就出在在2张表中都会出现groupid字段是什么地方出了错误?
:loveliness:
&hibernate-mapping package=&com.zw.wllt&& 一的一端的配置映射
&class name=&Group& table=&t_group&&
&id name=&id&&
&generator class=&native& /&
&property name=&name& /&
&set name=&person& inverse=&true&&
&key column=&groupid&/&
&one-to-many class=&Group&/&
加入inverse 属性,让多的一端来维护关系试试。
&hibernate-mapping package=&com.zw.wllt&& 一的一端的配置映射
&class name=&Group& table=&t_group&&
&id name=&id&&
&generator class=&native& /&
&property name=&name& /&
&set name=&person& inverse=&true&&
&key column=&groupid&/&
&one-to-many class=&person&/&小夜的传说 的BLOG
用户名:小夜的传说
文章数:87
评论数:151
访问量:73342
注册日期:
阅读量:5863
阅读量:12276
阅读量:364559
阅读量:1059795
51CTO推荐博文
【Hibernate】之关于使用连接表实现一对多关联映射基于中间表实现的一对多的关联映射,还是比较常见的。Person(人)和Group(组)Annotations配置@Entity
@Table(name="t_group")
publicclass&Group&{
&&&&private&Integer&
&&&&private&String&
&&&&private&Set&Person&&persons=newHashSet&Person&();
&&&&@OneToMany
&&&&@JoinTable(name="t_p",joinColumns={@JoinColumn(name="g_id")},
&&&&&&&&&&&inverseJoinColumns={@JoinColumn(name="p_id")})
&&&&public&Set&Person&&getPersons()&{
&&&&publicvoid&setPersons(Set&Person&&persons)&{
&&&&&&&this.persons&=&
&&&&@GeneratedValue
&&&&public&Integer&getId()&{
&&&&publicvoid&setId(Integer&id)&{
&&&&&&&this.id&=&
&&&&@Column(name="g_name")
&&&&public&String&getName()&{
&&&&publicvoid&setName(String&name)&{
&&&&&&&this.name&=&
@Table(name="p_person")
publicclass&Person&{
&&&&private&Integer&
&&&&private&String&
&&&&private&Integer&
&&&&@GeneratedValue
&&&&public&Integer&getId()&{
&&&&publicvoid&setId(Integer&id)&{
&&&&&&&this.id&=&
&&&&@Column(name="p_name")
&&&&public&String&getName()&{
&&&&publicvoid&setName(String&name)&{
&&&&&&&this.name&=&
&&&&@Column(name="p_age")
&&&&public&Integer&getAge()&{
&&&&publicvoid&setAge(Integer&age)&{
&&&&&&&this.age&=&
}XML配置&?xml&version="1.0"?&
&!DOCTYPE&hibernate-mapping&PUBLIC&
&&&&"-//Hibernate/HibernateMapping&DTD&3.0//EN"
&&&&"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"&
&hibernate-mapping&package="csg.hibernate.entity"&
&&&&&class&name="Group"&table="t_group"&
&&&&&&&&id&name="id"&
&&&&&&&&&&&&column&name="id"/&
&&&&&&&&&&&&generator&class="native"&/&
&&&&&&&&/id&
&&&&&&&&property&name="name"&/&
&&&&&&&&set&name="persons"&table="t_p"&
&&&&&&&&&&&&key&column="g_id"/&
&&&&&&&&&&&&many-to-many&column="p_id"&class="Person"&unique="true"&/&
&&&&&&&&/set&
&&&&&/class&
&/hibernate-mapping&&?xml&version="1.0"?&
&!DOCTYPE&hibernate-mapping&PUBLIC&
&&&&"-//Hibernate/HibernateMapping&DTD&3.0//EN"
&&&&"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"&
&hibernate-mapping&package="csg.hibernate.entity"&
&&&&&class&name="Person"&table="t_person"&
&&&&&&&&id&name="id"&
&&&&&&&&&&&&column&name="id"/&
&&&&&&&&&&&&generator&class="native"&/&
&&&&&&&&/id&
&&&&&&&&property&name="name"&/&
&&&&&&&&property&name="age"&/&
&&&&&/class&
&/hibernate-mapping&在一对多的中间表映射中,Hibernate自动会转化为多对多来处理!本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)
本文收录至博客专题:《》

我要回帖

更多关于 手机玩游戏录视频 的文章

 

随机推荐