实体关联(1)

@JoinColumn:如果要指向从表主键以外的字段,就必须用referencedColumnName()属性。referencedColumnName()指定的字段必须具有唯一性

如果one-one关联中的相关实体使用了复合主键,则需要使用@JoinColumns注解来定义多个外键字段。 

在关系数据库模型中,关系是没有方向的。因此同样的数据库shema对单向和双向的对象关系都是适用的。

在所有的双向关联都涉及到关联关系的owning side 和inverse side.

始终要对双向关联的两端同时进行设置。

单向one-to-many的数据库结构和关联关系与编程模型中定义的可能有所不同。数据库表间关系是反向的,而persistence manager会按照开发人员指定的规则来管理bean。

1.可以在从表建立映射主表主键的外键,即在many一方的表建立外键。2.建立中间表)。

Collection、List、Map和Set:Collection可以包含一组指向同类型entity bean的引用,并且运行重复引用同一实体,而这在Set中是不可以的。

Collection(无序、可重复),

Set(无序、不可重复),

List(有序、可重复),

Map。


游离实体与FetchType

延迟加载:仅在实体受控时才有效。

所以会有延迟初始化的问题:

解决方法1.在实体仍受控时,对所需关联进行访问(*.getNumbers().size()).

2.在查询实体时使用eagerly fetch. JPQL中用fetch join


关联关系
RDBMS
单向1:1,
双向1:1,
在主键建立从表的外键
单向1:n,
单向m:1,
双向1:n
在many方建立外键,可建立中间表
单向m:n
双向 m:n
建中间表


何时使用级联

        级联仅是一种减少Entity Manager API 使用次数的便捷工具。

Refresh

     refresh不会将对象实例中的变更信息更新到数据库。相反,它是根据数据库来刷新实体的状态。同样,当刷新一个对象时,与之关联的对象也会被刷新。

用在何处:当entity bean 有一些成员属性,其取值要由数据库来生成(如触发器)时,refresh()方法就非常有用。在这种情况下,要确保从persistence provider 的角度而言,那些生成的成员属性是只读的。亦即,使用@Column(insertable=false,updatable= false).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值