JPA关联关系

多对一/一对一

  1. 一般有多的一方来维护关联关系,
  2. //映射单向 n-1 的关联关系
    //使用 @ManyToOne 来映射多对一的关联关系
    //使用 @JoinColumn 来映射外键. 
    //可使用 @ManyToOne 的 fetch 属性来修改默认的关联属性的加载策略
    @JoinColumn(name="1的一方的id")
    @ManyToOne(fetch=FetchType.LAZY)

     

  3. 保存的时候建议先保存 1 的一方 ,这样不会多出n条update语句

  4. 获取n的一方的时候,用做外链接方式来获取1的一方的对象,可以使用@ManyToOne的fetch属性来设置为懒加载

  5. 不能直接删除1的一方,因为有键约束

多对多

  1. 	//使用 @ManyToMany 注解来映射多对多关联关系
    	//使用 @JoinTable 来映射中间表
    	//1. name 指向中间表的名字
    	//2. joinColumns 映射当前类所在的表在中间表中的外键
    	//2.1 name 指定外键列的列名
    	//2.2 referencedColumnName 指定外键列关联当前表的哪一列
    	//3. inverseJoinColumns 映射关联的类所在中间表的外键
    	@JoinTable(name="ITEM_CATEGORY",
    			joinColumns={@JoinColumn(name="ITEM_ID", referencedColumnName="ID")},
    			inverseJoinColumns={@JoinColumn(name="CATEGORY_ID", referencedColumnName="ID")})
    	@ManyToMany
    
    
    
    	@ManyToMany(mappedBy="categories")//另一方放弃维护

     

  2. 对于关联的集合对象, 默认使用懒加载的策略.
  3. 使用维护关联关系的一方获取, 还是使用不维护关联关系的一方获取, SQL 语句相同. 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值