打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
(1)EJB中mappedBy的理解
EJB3.0中关于对象关系映射的mappedBy是最让人疑惑的。现有引用其他人所述的内容如下:


如果两个实体Bean是双向多对多关联,在使用了mappedBy的一端我们称为关系目标方(方便起见,称为被控方他theOwned),另一端称之为关系拥有 方(方便起见,称为控制方 theOwner)。相应的对象以下称之为主控对像和被控对象。

容器在根据上述的mappedBy关系建立临时表时,是以“主控表名_被控表名”的方式创建的。
在利用em.persist()方法新增主控对象,并且主控对像设置了被控对像的集合属性,则被控对象和主控对像的关联关系会增加到中间关联表。反过来增加被控对像,则关联关系不会增加在关联表中,除非利用merge方法修改被控对像。这就是mappedBy的用法。
以上引用来自:http://hi.baidu.com/mysrc/blog/item/6da9faeb5fa76434b90e2d0a.html

a)只有OneToOne,OneToMany,ManyToMany上才有mappedBy属性,ManyToOne不存在该属性;
b) mappedBy标签一定是定义在the owned side(被拥有方的),他指向the owningside(拥有方);
c) mappedBy的含义,应该理解为,拥有方能够自动维护跟被拥有方的关系;
   当然,如果从被拥有方,通过手工强行来维护拥有方的关系也是可以做到的。
d)mappedBy跟JoinColumn/JoinTable总是处于互斥的一方,可以理解为正是由于拥有方的关联被拥有方的字段存在,拥有方才拥有了被拥有方。mappedBy这方定义的JoinColumn/JoinTable总是失效的,不会建立对应的字段或者表;
e) 标准的关系映射,定义在ejb-3_0-fr-spec-persistence.pdf 的2.1.8Relationship Mapping Defaults 章节中:
以上引用来自:http://revolver77.spaces.live.com/blog/cns!583C0A9A80FC1137!209.entry

hibernate mappedBy 说明
   在定义对象映射时OneToMany 和ManyToMany映射,有mappedBy属性。
当不指定mappedBy属性时以ManyToOne为例,向多端增加一个对象时,执行如下操作
bid.setItem(item);
bids.add(bid);
   bid为owner端,在不映射mappedBy属性时,hibernate会执行两次sql操作,
在映射了mappedBy属性时,从端的变化会被忽略。此时若只调用item.getBids.add(bid),对象之间
的关系是会被忽略的。只有同时调用了bid.setItem(item)时,实体之间的关系才能建立。

引用来自:http://blog.csdn.net/minfree/archive/2008/03/28/2225064.aspx


以下是我个人的一点小的补充。
mappedBy的值即指向的内容是拥有方的实体类中存在的被拥有方类的属性名称

如Class和Student,两者为一对多关系。Student为owner,Class为owned,在Student中有privateClass clas;
那么Class实体中@OneToMany的映射就应该是mappedBy=“clas”
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Hibernate一对多和多对一关系详解
Hibernate 中对mappedBy的理解
EJB 笔记 -Chapter08 Entity高级特性
JPA 与 Hibernate 的关系
Hibernate 自关联注解方式
JPA总结——实体关系映射(一对多@OneToMany)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服