上映射:休眠
问题描述:
答
不,它不是。 mappedBy
实际上与数据库无关。当关联是双向的时,它告诉关联的哪一方是拥有方。假设你在公司(反面)和雇员(所有者面)之间有关联。当谷歌建立和约翰之间的关联,
google.addEmployee(john);
不会让休眠保存协会在数据库中,因为你只设置关联的反向侧。
john.setCompany(google);
会让Hibernate将关联保存在数据库中,因为你设置了关联的所有者端。
每个双向关联都必须有一个所有者方和一个相反方。
在OneToMany双向关联中,所有者方必须是多方面的。
答
这很容易理解,mappedBy
显示了FK所在的位置,并且当JB Nizet伤心时,它显示谁是关系的所有者,谁负责管理关系。
+0
它并不总是显示FK所在的位置。例如,在多对多关联中,mappedBy是必需的,但不涉及FK的位置。这不是思考mappedBy的正确方法。 –
我必须尝试通过自己的,但只是想知道,如果我启用级联比'google.addEmployee(约翰)'将工作与否? – TheCurious
不会。例如,在设置了一个cascase PERSIST的情况下,坚持使用google会坚持john,但john仍然不属于google。 –
正如你所说的**每一个双向关联都必须有一个所有者端和一个反面端**但是我坚持双向,没有'映射',但它只是在'@ onetomany'和'@ manytomany'的情况下创建了额外的表并且如果是@ @ onetoone,则在两张表中加入joincolum。这是更好的数据库设计的最佳做法吗? – TheCurious