关系映射
一对一,一对多,多对一,多对多
1)怎么写Annotation
2)增删改查CRUD怎么写
一对一:单向(主键,外键),双向(主键,外键),中间表
一对多:单向,双向
多对一:单向,双向
多对多:单向,双向
集合映射,继承关系(不重要),组件映射
一对一:
如,husband,wife. A husband to A wife. 建立两个类,都有id,name两个属性
可在husband类中引用wife. 只是单向关系. 数据库有两张表,一个表是husband,一个表是wife
同样都是有id , name 两个字段 primary key(id).
设计方法有好多种.
1)主键关联.新增一个husband的时候,先看wife的id字段,有了,才可以创建
2)外键关联.在husband/wife表中加一个husband_id/wife_id
3)新增一个关系表.两个字段,一个是husband_id 参考husband表,另一个wife_id 参考wife表
a)一对一单向外键关联
1)Annotation
在husband类中有wife的引用
写@Entity @Id @GeneratedValue 在getWife前加@One2One
在wife类中
写@Entity @Id @GeneratedValue
@One2One 生成的表是,husband表中的外键默认为wife_id,要自己指定的话用
@JoinColumn(name="wifeid"),@JoinColumn可用在你自己建好了表,用这个来映射
2)xml
student - studentcard
在studentcard.hbm.xml中要写<many-to-one name="student" column="student_id" unique="true">
unique="true" 其实就是一对一
b)一对一双向外键关联
1)Annotation
husband类中有wife的引用.在wife类中也有husband的引用
方法同单向,不过需要在两个类中都加@One2One,不过这个方法生成的表有点奇怪
会变成两个表中都有一个外键,就是有两个外键关系
解决方法: 在wife类中,@One2One(mappedBy="wife"),告诉hibernate,在husband类中有wife的引用
已经由getWife属性映射了.这时只会有wife_id,而不会两边都有xxx_id
凡是双向,一定要设mappedBy
2)xml
方法同单向,但是要在student.hbm.xml写<one-to-one name="studentcard" property-ref="student">
property-ref指定的跟Annotation中的mappedBy作用一样
c)一对一单向主键关联 (不重要)
1)Annotation
同一对一单向外键关联,只不过@JoinColumn变成了@PrimaryKeyJoinColumn即可
不过貌似有bug.不知道有没有更新.
2)xml
在studentcard.hbm.xml加 <one-to-one name="student">,不过这样没有自动生成外键联系
加上constrainted="true",就会帮你自动生成外键约束,<generator class="foreign"> 不能用native了.
<generator class="foreign">
<param name ="property">student</param>
</generator>
d)一对一双向主键关联 (不重要)
1)Annotation
同双向. 只不过@JoinColumn变成了@PrimaryKeyJoinColumn,不用mappedBy
2)xml
同单向? -- 没听清楚~ 不过不重要. 需要的时候再查.
e)一对一 联合主键
wife(name,id,age),husband(name,id,age),wifepk(name,id)
不在husband中@OneToOne下设@JoinColumn了,要改名或映射的话,要用@JoinColumns
要这样写
@JoinColumns(
{
@JoinColumn(name="wifeId",referencedColumnName="id"),
@JoinColumn(name="wifeName",referencedColumnName="name")
}
)
- 浏览: 1184760 次
- 性别:
- 来自: 广州
最新评论
-
it_node:
谢谢拦截器知识分享,推荐一个flask的入门教程给大家:深入浅 ...
Spring MVC 方法注解拦截器(转) -
18335864773:
尝试用一下pageoffice插件去生成excel把。代码调用 ...
用POI生成Excel文件的典型例子【基于poi3.0 附源码】 -
小梦翔:
管用,不过第一个只有Android4.4的,第二个有4.4一下 ...
Android Kikat下由图片Uri获取Path的解决方案 -
spring_springmvc:
java程序语言学习教程 地址http://www.zuida ...
JAVA程序员您需要学习的25个标准 -
lliiqiang:
与客户端交互是前台事情,即便出错,对于后台数据仍然可以被视为交 ...
MVC设计模式的总结
相关推荐
hibernate学习笔记 hibernate学习笔记 hibernate学习笔记 hibernate学习笔记 hibernate学习笔记 hibernate学习笔记 hibernate学习笔记 hibernate学习笔记
hibernate个人学习笔记完整版 hibernate个人学习笔记完整版
Hibernate学习笔记 Hibernate学习笔记 Hibernate学习笔记 Hibernate学习笔记
Hibernate学习笔记Hibernate学习笔记Hibernate学习笔记Hibernate学习笔记
Hibernate学习笔记_特别详细 Hibernate学习笔记_特别详细
hibernate的学习笔记,hibernate所以知识点全,一看就能上手........包含代码和书写格式和图片分析~~~~hibernate的学习笔记,hibernate所以知识点全,一看就能上手........包含代码和书写格式和图片分析~~~~...
Hibernate3 学习笔记.ppt 一、O/R Mapping 二、Hibernate入门 三、Hibernate映射申明(Mapping declaration) 四、Hibernate Annotations 五、持久化对象的状态和生命周期 六、Hibernate查询 七、Hibernate最佳实践 ...
Hibernate_学习笔记.Hibernate_学习笔记.
学习hibernate框架时,整理的笔记,对hibernate框架有全面的介绍
hibernate-学习笔记学习笔记学习笔记学习笔记学习笔记学习笔记学习笔记学习笔记学习笔记学习笔记
Hibernate的学习笔记.docHibernate的学习笔记.docHibernate的学习笔记.docHibernate的学习笔记.docHibernate的学习笔记.docHibernate的学习笔记.docHibernate的学习笔记.docHibernate的学习笔记.docHibernate的学习...
Hibernate的学习笔记,希望对各位有一定的帮助。
Hibernate+学习笔记
Hibernate4学习笔记1
hibernate 学习笔记精要hibernate 学习笔记精要hibernate 学习笔记精要hibernate 学习笔记精要
一步步hibernate annotation练习笔记, 实例操作,从经验中学习
学习hibernate框架笔记整理和自己对hibernate认知,相互学习
达内HIBERNATE学习笔记,达内HIBERNATE学习笔记,达内HIBERNATE学习笔记,达内HIBERNATE学习笔记,
传智博客2016 hibernate框架学习笔记,分为 day01、day02、day03、day04,包含pdf和文档