mappedBy属性

mappedBy的意思就是“被映射”,即mappedBy这方不用管关联关系,关联关系交给另一方处理

1.规律:凡是双向关联,mappedBy必设,因为根本都没必要在2个表中都存在一个外键关联,在数据库中只要定义一边就可以了

a) 只有OneToOne,OneToMany,ManyToMany上才有mappedBy属性,ManyToOne不存在该属性;
b) mappedBy标签一定是定义在the owned side(被拥有方的),他指向the owning side(拥有方);
c) mappedBy的含义,应该理解为,拥有方能够自动维护 跟被拥有方的关系;
当然,如果从被拥有方,通过手工强行来维护拥有方的关系也是可以做到的。

d) mappedBy跟JoinColumn/JoinTable总是处于互斥的一方,可以理解为正是由于拥有方的关联被拥有方的字段存在,拥有方才拥有了被拥有方。mappedBy这方定义的JoinColumn/JoinTable总是失效的,不会建立对应的字段或者表

举例:
Person{
@OneToOne(cascade={CascadeType.ALL},optional=true)
IdCard idCard;
}
IdCard{
@OneToOne(cascade=CascadeType.ALL,mappedBy=“idCard” , optional=false)
Person person;
}

IdCard多了一个mappedBy这个方法,它表示IdCard和Person的关系是定义在Person里面的idCard这个成员上面的,它表示此表是一对一关系中的从表,也就是关系是在person表里面维护的 ,这一点很重要 . Person表是关系的维护者,owner side,有主导权,它有个外键指向IdCard。
我们也可以让主导权在IDCard上面,也就是让它产生一个指向Person的外键,这也是可以的,但是最好是让Person来维护整个关系,这样更符合我们正常的思维 .

我们也可以看到在Person里面IDCard是注释是optional=true,也就是说一个人是可以没有身份证的,但是一个身份证不可以没有人,所以在IDCard里面注释person的时候,optional就为false了,这样就可以防止一个空的身份证记录进数据库.

@JsonBackReference注解
jackson中的@JsonBackReference和@JsonManagedReference,以及@JsonIgnore均是为了解决对象中存在双向引用导致的无限递归(infinite recursion)问题。这些标注均可用在属性或对应的get、set方法中。

@JsonBackReference和@JsonManagedReference:这两个标注通常配对使用,通常用在父子关系中。@JsonBackReference标注的属性在序列化(serialization,即将对象转换为json数据)时,会被忽略(即结果中的json数据不包含该属性的内容)。@JsonManagedReference标注的属性则会被序列化。在序列化时,@JsonBackReference的作用相当于@JsonIgnore,此时可以没有@JsonManagedReference。但在反序列化(deserialization,即json数据转换为对象)时,如果没有@JsonManagedReference,则不会自动注入@JsonBackReference标注的属性(被忽略的父或子);如果有@JsonManagedReference,则会自动注入自动注入@JsonBackReference标注的属性。

@JsonIgnore:直接忽略某个属性,以断开无限递归,序列化或反序列化均忽略。当然如果标注在get、set方法中,则可以分开控制,序列化对应的是get方法,反序列化对应的是set方法。在父子关系中,当反序列化时,@JsonIgnore不会自动注入被忽略的属性值(父或子),这是它跟@JsonBackReference和@JsonManagedReference最大的区别。


@AfterMapping //表示让mapstruct在调用完自动转换的方法之后,会来自动调用本方法

2022-7-29 小白学后端之mappedBy属性+@JsonBackReference注解+@AfterMapping注解相关推荐

  1. 从小白到精通python要多久-零基础如何学Python?小白学Python需要多久?

    目前市场上对于Python开发人才的需求与日递增,所以很多人都会选择去学Python.那如果是零基础又该如何学Python呢?小白学Python需要多久呢?下面,小编就与大家来看一下! 零基础的新手应 ...

  2. 分奇偶数c语言_小白学写字(C语言)

    小白学写字 #输入输出语句应用 1.用printf语句编写计算器.样例: 程序如下: #include void main() { printf("*****计算器*****\n" ...

  3. 零基础学python要多久-零基础如何学Python?小白学Python需要多久?

    目前市场上对于Python开发人才的需求与日递增,所以很多人都会选择去学Python.那如果是零基础又该如何学Python呢?小白学Python需要多久呢?下面,小编就与大家来看一下! 零基础的新手应 ...

  4. 小白学vb还是python_小白学 Python 爬虫(30):代理基础

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  5. 小白学 Python 爬虫(30):代理基础

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  6. 如何看待2022年秋招Java后端开发岗一片红海?

    如何看待2022年秋招Java后端开发岗一片红海? 我猜是转行去CV和NLP想当"人上人"的俊才们,发现自己卷不上"一等人上人"的算法岗,于是转投"二 ...

  7. 震惊!2022 年秋招 Java 后端开发岗竟然一片红海!算法岗都不香了吗?

    据说,2022 年算法岗遇冷,BAT 暑期实习甚至收不到简历,Java 反而爆炸. 难道,Java 的春天(映射 Spring 全家桶)又要来了吗?作为 Java 领域的优质创作者(见下图),又可以在 ...

  8. 小白学 Python 爬虫(42):春节去哪里玩(系列终篇)

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  9. 2022黑马Redis跟学笔记.实战篇(二)

    2022黑马Redis跟学笔记.实战篇 二 实战篇Redis 开篇导读 4.1短信登录 4.1.1. 搭建黑马点评项目 一.导入黑马点评项目 二.导入SQL 三.有关当前模型 四.导入后端项目 相关依 ...

最新文章

  1. SSE图像算法优化系列十九:一种局部Gamma校正对比度增强算法及其SSE优化。
  2. linux中断程序快捷键,linux命令行快捷键
  3. 机器学习中的数据预处理(sklearn preprocessing)
  4. 谈谈 css 的各种居中——读编写高质量代码有感
  5. 【javascript高级教程】JavaScript 对象
  6. Selenium自动化测试
  7. Java一键生成图表
  8. 大数据_Hbase-API访问_Java操作Hbase_判断表是否存在---Hbase工作笔记0012
  9. 页面加载时序问题----BUG分析
  10. 关于sqlmap的配置和基本使用教程
  11. java继承和接口连接怎么用_继承与接口的使用
  12. linux的显示器设置
  13. 5G虚拟专网七大典型行业案例!(附下载)
  14. java 顺丰电子面单,【第三方API】顺丰电子面单SDK调用总结-java
  15. CrossApp更新至0.3.3,推出JS体验版
  16. 软件著作权算法软件设计说明书_软件著作权设计说明书范本.doc
  17. oracle12c 配置监听,redhat上oracle 12c配置监听
  18. Java使用aspose生成简历
  19. 【机器学习笔记之五】用ARIMA模型做需求预测用ARIMA模型做需求预测
  20. 智优ERP的升级版智优E3_ERP,可以自定义列,和自定义打印公司logo

热门文章

  1. PMP和软考高项集成,更应该考哪个呢?
  2. 软电话MicroSIP编译
  3. Echarts官方实例地图不显示
  4. layui引用阿里矢量图标
  5. java mvc jquery weui_jquery weui做的三级联动
  6. typora中插入emoji表情
  7. linux系统Hadoop启动错误,Hadoop启动错误解决总结
  8. BERT-based Lexical Substitution论文阅读
  9. 解决浏览器下载文件 中文名字乱码解决
  10. 为什么黄牛票那么容易拿到?Python爬虫告诉你