@zhuanxu
2017-12-28T12:48:24.000000Z
字数 1728
阅读 3414
spring-data-jpa-系列教程
前面一篇我们介绍了如何如何定义实体,实体类中的标注,就是描述实体类到数据库 Schema 的映射,对应于 DDL 操作,而Repository
接口中的方法,则对应于 DML 操作,即对数据库的增删改查。
前文介绍的注释主要是关于 Schema 自身字段的信息,Schema 之间还存在关系,比如外键关联。JPA @OneToOne
、@ManyToOne
、@OneToMany
和@ManyToMany
几个标注提供用以定义实体类之间的关系,首先来了解一下@OneToOne。
OneToOne 表示一对一的关系,先来看 OneToOne 的属性:
targetEntity属性表示默认关联的实体类型,默认为当前标注的实体类,绝大数据情况下不需要进行设置。
cascade属性表示级联操作策略:
关于fetch属性,所有@XXXToOne,默认值为EAGER,所有@XXXToMany,默认值为LAZY。
OneToOne 注释属性自动映射的字段名按照如下方式命名:
关联表的名称 + "_" + 关联表主键的字段名
如果对应的字段名是其他名字,则可以通过@JoinColumn来定义外键关联的字段名称。
通过属性mappedBy
标明,设置了mappedBy属性的关系标注(各种@XXXToXX),表明当前类是关系的被维护方,而另外一个类则是关系维护方,你可以这样理解:
最后需要注意的一个问题是,关系维护方才能够操作两者的关系。
看两段代码:
@ManyToOne的属性选项与@OneToOne是类似的:
直接上代码示例,不多讲。
Spring Data 内建的查询构造机制可能是最有特色的一个地方。
一个例子:
所有支持的有:
更多的spring-data相关的可以在spring-data 官方文档查看。
本文主要介绍了spring-data只关系的定义,下一篇将会开始spring-jpa的一些实际项目使用。
这是 jpa 的第四篇,你的鼓励是我继续写下去的动力,期待我们共同进步。