双向一对一映射
class Card{
@OneToOne(optional=false,cascade={CascadeType.MERGE,CascadeType.REMOVE},mappedBy="card",fetch=FetchType.EAGER)
Person getPerson(){}
}
mappedBy 单向关系不需要设置该属性,双向关系必须设置,避免双方都建立外键字段
数据库中1对多的关系,关联关系总是被多方维护的即外键建在多方,我们在单方对象的@OneToMany(mappedby=" ")
把关系的维护交给多方对象的属性去维护关系
对于mappedBy复习下:
a) 只有OneToOne,OneToMany,ManyToMany上才有mappedBy属性,ManyToOne不存在该属性;
b) mappedBy标签一定是定义在the owned side(被拥有方的),他指向the owning side(拥有方);
c) 关系的拥有方负责关系的维护,在拥有方建立外键。所以用到@JoinColumn
d)mappedBy跟JoinColumn/JoinTable总是处于互斥的一方
cascade 设定级联关系,这种关系是递归调用
可以是CascadeType.PERSIST(级联新建)CascadeType.REMOVE(级联删除)CascadeType.REFRESH(级联刷 新)CascadeType.MERGE(级联更新)CascadeType.ALL(全部级联)
fetch 预加载策略和@Basic差不多FetchType.LAZY,FetchType.EAGER
optional 设置关联实体是否必须存在false必须存在 即不是随意的,true关联实体可以不存在即是随意 的。
比如Card(身份证)中的person(人)optional为false意味有身份证就必须有人对应,但是在实体Person中Card的optional为true意味有人不一定要有身份证。
@JoinColumn(name="cardid",referencedColumnName="cid")设置外键,
name该外键的字段名,referencedColumnName外键对应主表的字段
因为card和person是双向关系而在card端已经mappedBy="card"设定card为主表,
所以要在person端的关联项设置外键@JoinColumn
双向一对多与多对一 ,单向一对多与多对一 @OneToMany @ManyToOne 其它的可以参考上面的
双向多对多(实际开发中多对多通常是双向的)
@JoinTable(
name="teacher_student",
joinColumns={@JoinColumn(name="teacher_id",referencedColumnName="tid")},
inverseJoinColumns={@JoinColumn(name="student_id",referencedColumnName="sid")}
)
joinColumns写的都是本表在中间表的外键名称,
inverseJoinColumns写的是另一个表在中间表的外键名称。
单向多对多 更加简单略
分享到:
相关推荐
hibernate 对象关系映射总结hibernate 对象关系映射总结hibernate 对象关系映射总结
对象关系映射,并持久化到数据库的开源组件,是对JDBC 的封装,主要负责java 对象的持久化.。 对象序列化适应临时的少量的对象备份。 对象持久化和关系型数据库联合在一起,适应大量的对象持久存储
学习笔记之什么是持久化和对象关系映射ORM技术,什么是所谓的持久化,什么是ORM
Hibernate对象关系映射一对多 很基础等文档
ORM对象关系映射。。ORM对象关系映射。。太详细了。。最全的介绍。
对象关系映射模型
MongoDB、Java与对象关系映射 MongoDB、Java与对象关系映射
O/R Mapping中对象关系映射解决方案汇总 对于一个ORM方案时,为了提供用户对具体映射方案的细颗粒度的控制的可能,特别对于企业级应用,应该是用户选择是否使用该产品比较重要的因素之一,需要尽可能多的实现...
对象/关系映射 —Hibernate 对象/关系映射 —Hibernate 对象/关系映射 —Hibernate
开源对象关系映射框架Hibernate知识培训开源对象关系映射框架Hibernate知识培训
NULL 博文链接:https://shmilyaw-hotmail-com.iteye.com/blog/2357862
Her 一个ORM(对象关系映射)将REST资源映射成Ruby对象,它旨在用一个RESTful API代替数据库来构建应用程序。
关于hibernate对象关系映射的实例,适合初学者,对应关系有一对一,多对一,多对多
在研究对象关系映射的时候经常会用到hibernate框架,这里给出了hibernate框架的案例,通过小的案例来展示对象关系映射技术的应用。
不用編寫SQL語句或存儲過程即可實現下列功能: 1、數據表、試... <br>提供 1、对象关系映射组件: Kenly.DBFramework.dll 2、代码生成器:Xsd2CS.exe 3、范例:数据库脚本、ASP.NET工程 4、使用手册。
Hibernate 是一种Java语言下的对象关系映射解决方案。 它是使用GNU宽通用公共许可证发行的自由、开源的软件。它为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。Hibernate也是目前Java...
MongoDB、Java与对象关系映射.pdfMongoDB、Java与对象关系映射.pdf
SQLAlchemy是Python SQL工具包和对象关系映射器,它为应用程序开发人员提供了SQL的全部功能和灵活性。 SQLAlchemy提供了一整套众所周知的企业级持久性模式,旨在实现高效,高性能的数据库访问
java一级缓存及对象关系映射
一个用于Android开发的对象关系映射工具-GreenDao.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。