关系映射
一对一,一对多,多对一,多对多
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")
}
)
- 浏览: 1214291 次
- 性别:
- 来自: 广州
-
最新评论
-
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设计模式的总结
相关推荐
在了解和学习Spring笔记中的Hibernate知识点时,我们能掌握如何利用Hibernate框架简化数据库操作,并深入理解其底层实现原理。这些知识点能帮助开发者高效地进行Java持久层的开发,提高代码质量和开发效率。
本笔记旨在帮助初学者从零基础逐步提升至J2SE(Java Standard Edition)和J2EE(Java Enterprise Edition)的高手水平。J2SE是Java的核心部分,提供了用于桌面应用程序和服务器端开发的基础框架;而J2EE则是Java在...
ext学习笔记一 小试iBatis RIA(Rich Internet Application)的现状和未来 Java应用中域名解析不过期的解决方法 Java编程那些事儿45—数组使用示例1 一步步熟悉OFBiz 用Java做客户端调用.NET写...
视频教程提供了直观的学习方式,笔记能够帮助学习者梳理和复习重点知识,源码的提供则可以让学习者直接看到代码是如何被编写的,从而更好地理解编程概念。通过这样的学习材料,配合大量的实践和项目练习,学习者能够...
李兴华老师的笔记涵盖了Servlet、JSP、JSTL、EL表达式等Web开发基础,深入讲解了MVC设计模式以及Struts、Spring、Hibernate等主流框架的使用。此外,他还对EJB(Enterprise JavaBeans)进行了介绍,让读者了解企业级...