[关闭]
@zhuanxu 2017-12-28T12:48:24.000000Z 字数 1728 阅读 3414

spring data jpa 系列教程四:实体类的关系

spring-data-jpa-系列教程


前面一篇我们介绍了如何如何定义实体,实体类中的标注,就是描述实体类到数据库 Schema 的映射,对应于 DDL 操作,而Repository接口中的方法,则对应于 DML 操作,即对数据库的增删改查。

前文介绍的注释主要是关于 Schema 自身字段的信息,Schema 之间还存在关系,比如外键关联。JPA @OneToOne@ManyToOne@OneToMany@ManyToMany几个标注提供用以定义实体类之间的关系,首先来了解一下@OneToOne。

OneToOne关系

OneToOne 表示一对一的关系,先来看 OneToOne 的属性:

@OneToOne

关于fetch属性,所有@XXXToOne,默认值为EAGER,所有@XXXToMany,默认值为LAZY。

@JoinColumn

OneToOne 注释属性自动映射的字段名按照如下方式命名:

关联表的名称 + "_" + 关联表主键的字段名

如果对应的字段名是其他名字,则可以通过@JoinColumn来定义外键关联的字段名称。

双向 @OneToOne 关联

通过属性mappedBy标明,设置了mappedBy属性的关系标注(各种@XXXToXX),表明当前类是关系的被维护方,而另外一个类则是关系维护方,你可以这样理解:

最后需要注意的一个问题是,关系维护方才能够操作两者的关系。

看两段代码:

ManyToOne关系

@ManyToOne的属性选项与@OneToOne是类似的:

ManyToMany关系

直接上代码示例,不多讲。

自定义查询

Spring Data 内建的查询构造机制可能是最有特色的一个地方。
一个例子:

所有支持的有:

更多的spring-data相关的可以在spring-data 官方文档查看。

总结

本文主要介绍了spring-data只关系的定义,下一篇将会开始spring-jpa的一些实际项目使用。

这是 jpa 的第四篇,你的鼓励是我继续写下去的动力,期待我们共同进步。
这个时代,每个人都是超级个体!关注我,一起成长!

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注