jpa关联映射(一)
開發(fā)中常用到數(shù)據(jù)表的關聯(lián)(其實很難遇到。。),spring-data-jpa(其實是hibernate)提供了一整套十分方便的注解來供我們使用表關聯(lián)功能。
OneToOne OneToMany ManyToOne ManyToMany舉例之前,先理解兩個表的關系中,哪一個是主體,一對一以及多對多需要自己按照現(xiàn)實場景來區(qū)分,而一對多和多對一始終是以多的一方為主體的。注解在使用中“始終在非主體的一方標記自己在主體中的名稱”。
理解上面一段話,那么操作也會變得很簡單。
開始前,把我們之前測試的Student表的主鍵生成策略改成自增,需要新增一些實體,ER圖如下:
一對一
Student和Score是一對一的關系,Score類如下:
現(xiàn)在開始建立它和Student的關系,首先在Student類中加入元素Score,在Score類中也加入元素Student,并都用OneToOne標注,你中有我,我中有你。
Score:
Student:
然后我們需要區(qū)分誰是主體,按照現(xiàn)實理解,肯定是Student,于是我們需要在非主體的那個類中標注出它在主體中的名字,也就是在Score類中標注它在Student類中的名字:
@OneToOne(mappedBy = "score")private Student student;此外,我們還可以設置映射級聯(lián),只需要在注解中增加參數(shù)(千萬要注意必須在主體一側):
@OneToOne(cascade = CascadeType.REMOVE )private Score score;當student刪除的時候,score對應也會刪除。其他可以參看CascadeType類。
一對多(多對一)
現(xiàn)在我們開始建立student和school的關系,根據(jù)我們開始說的,student肯定是主體,那么我們只需要在school中標注出它在student中的名稱就好了。建立School類:
在Student類中加入School,并且指定關系是多對一
在School中建立Student集合,指定關系是一對多,并且申明它在Student類中的名稱
@OneToMany(mappedBy = "school")private List<Student> students;多對多
看到現(xiàn)在,大概也能知道多對多怎么設置了,我們新建Subject
Student:
Subject:
@ManyToMany(mappedBy = "subjects")private List<Student> students;轉載于:https://www.cnblogs.com/JAYIT/p/8566267.html
總結
以上是生活随笔為你收集整理的jpa关联映射(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。