Hibernate注解(二):关联关系映射注解
关联关系映射注解
以下项目均在之前相应代码的基础上进行的修改。这些项目均需要做的是:
删除映射文件
在hibernate.cfg.xml中注册实体类
注解的重要位置在实体类中关联属性上。这里是关联关系的体现。
(1)一对多单向关联
举例:项目annotation_one2many_s
@OneToMany表明是一对多关联关系。
@JoinColumn指明该属性所关联的外键。

targetEntity:指明该属性所关联的类。
cascade:指定级联类型。其为数组,使用多种级联,则可使用{ }赋值。其值为Cascade常量:
对于一对多单向关联关系的多方,由于其不具备维护关联关系的能力,即没有一方对象作为属性,所以这里是不用设置关联相关的注解的。
(2)一对多双向关联
举例:项目annotation_one2many_d
这其中增加了mappedBy属性。

mappedBy属性用法:
该属性与关联关系的维护权相关。
该属性应放在放弃维护权一方。
该属性值为对方的关联属性,表明以后的关联关系将由它来负责。
使用该属性的注解,无需也不能再设置cascade属性。
该属性只可能在双向关联中使用。
使用了该属性,将不能再使用@JoinColumn注解。因为@JoinColumn注解表示其所注解的属性将来通过set方法设值后,会与DB中哪个字段相关联。
mappedBy属性表示当前注解的关联属性放弃了维护权,即使执行了set方法将值设置入,其也不会写入到DB中。
也正因为放弃了维护权,与DB无关了,所以设置了mappedBy属性的注解,再设置cascade也就无意义了。
一个是使被注解者与DB相关,一个是使被注解者放弃与DB的关系,它们是相互矛盾的。

(3)自关联

(4)多对一单向关联


(5)多对多单向关联
举例:annotation_many2many_s
多对多关联使用@ManyToMany注解。其会自动生成一个中间表,表名为两个关联对象的映射表名的联合:表1_表2。该表包含两个字段,字段名也与表名相关。字段名分别为:表1_id与表2_id。当然,默认的表名与字段名均可通过@JoinTable进行修改(不研究)。


(6)多对多双向关联


Hibernate注解(二):关联关系映射注解的更多相关文章
- 【lombok】lombok---帮你简化生成必要但臃肿的java代码工具 【映射注解和lombok注解同时使用 以及 映射注解放在属性和get方法上的区别】
官方地址:https://projectlombok.org/ GitHub:https://github.com/rzwitserloot/lombok 指导说明文档:http://jnb.ociw ...
- Hibernate学习(二)关系映射----基于外键的单向一对一
事实上,单向1-1与N-1的实质是相同的,1-1是N-1的特例,单向1-1与N-1的映射配置也非常相似.只需要将原来的many-to-one元素增加unique="true"属性, ...
- Hibernate(6)—— 一对多 和 多对多关联关系映射(xml和注解)总结
俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及的知识点总结如下: One to Many 映射关系 多对一单向外键关联(XML/Annotation) 一对多单向外键关联(XM ...
- Hibernate—— 一对多 和 多对多关联关系映射(xml和注解)总结(转载)
One to Many 映射关系 多对一单向外键关联(XML/Annotation) 一对多单向外键关联(XML/Annotation) 懒加载和积极加载 一对多双向外键关联(XML/Annotati ...
- Hibernate注解方式一对多自关联关系映射
MySQL版数据库表结构 DROP TABLE IF EXISTS SYS_DICT_ITEM; CREATE TABLE SYS_DICT_ITEM( ITEM_CODE ) NOT NULL, ...
- Hibernate框架学习之注解配置关系映射
上篇文章我们通过注解对映射了单个实体类,但是具体项目中往往实体类之间又是相互关联的,本篇文章就是从实体类之间存在的不同关联角度,具体学习下如何映射他们之间的关联,主要涉及内容如下: 单向的一 ...
- Hibernate注解----关联映射注解以及课程总结详解----图片版本
上一篇,记录了Hibernate注解----类级别注解以及属性注解详解 ,我们这一节主要讲解的是Hibernate注解----关联映射注解以及课程总结详解. 本节的主要内容: 第3章 关联映射注解 3 ...
- Hibernate使用注解进行ORM映射实例
在上一篇博客中,我们通过xml配置文件进行实体类和表的映射,但是近两年来有更多的项目对一些比较稳定的实体类使用了注解进行ORM映射,这样使得编程更加简洁.简单.其实使用注解进行ORM映射和使用xml进 ...
- hibernate之映射文件VS映射注解
前言 对于java开发者而言,注解应该不是一个陌生的概念,早在JavaSE阶段,例如@Override标记重写父类方法或实现接口方法,@Test标记单元测试方法,所以我们可以简单地把它理解为一种有特殊 ...
随机推荐
- Vue 兄弟组件之间传递数值
Vue 兄弟组件之间传值 创建一个公用文件夹,在文件夹中设置一个事件处理中心,即 然后在需要设置值的组件中引入该事件处理中心 import Hub from '../../common/eventHu ...
- Go 在 Windows 上用户图形界面 GUI 解决方案 Go-WinGUI 国产(使用cef 内核)
Go 在 Windows 上用户图形界面 GUI 解决方案 Go-WinGUI 国产 Go 在服务端的优势不容置疑,但是在桌面应用上却没有好的 GUI 支持,本项目是 Go 语言在 Windows 上 ...
- 人工模拟获取latch
人工模拟获取latch 任意地dump一latches结构文件: SQL> oradebug dump latches 10 ORA-00074: no process has been spe ...
- 【转】ARRAYLIST VECTOR LINKEDLIST 区别与用法
转自:http://www.cnblogs.com/mgod/archive/2007/08/05/844011.html ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实 ...
- windown下linux子系统的安装和卸载
原文:windown下linux子系统的安装和卸载 安装 第一步 打开开发人员模式 第二步 勾选适用linux的window子系统 第三步 打开powershell 第四步 在PowerShe ...
- 扪心自问,强大的UI框架,给我们带来了什么?(作者因此写了一个GuiLite)
MFC, QT, MINIGUI, ANDROID, IOS,如果这些平台,你都使用过,在下真心佩服,也相信你对这篇文章最具有发言权,真心期待你的回复和建议. 这些著名的UI说出来都让人如雷贯耳,如果 ...
- 利用WPF的ListView进行大数据量异步加载
原文:利用WPF的ListView进行大数据量异步加载 由于之前利用Winform的ListView进行大数据量加载的时候,诟病良多,所以今天试着用WPF的ListView来做了一下,结果没有让我失望 ...
- NS2网络模拟(4)-吞吐率图
1: #NS2_有线部分\ForGnuplot.plot 2: 3: #gnuplot> 4: #set xtics 0, 1, 10 5: set grid 6: set xrange [0: ...
- Android 位置服务——BaiduLocation的使用
原文:Android 位置服务--BaiduLocation的使用 版权声明:本文为博主原创文章,欢迎转载,转载请在文章显眼处说明文章出处并给出连接. https://blog.csdn.net/To ...
- Base64实现测试,不要太相信apache-common的性能
针对三种Base64实现: * 自已实现的 * JDK8的java.util.Base64 * apache-common的org.apache.commons.codec.binary.Base64 ...