注解@OneToMany@ManyToOne和@ManyToMany的使用总结

本文详细介绍了在项目中使用@OneToMany、@ManyToOne和@ManyToMany注解时的三种ORM映射策略:外键关联、表关联及默认关联,并通过具体示例展示了不同策略的应用场景及其配置方法。

0 背景

       项目中用到@OneToMany、@ManyToOne和@ManyToMany,以评论和回复为例(一个评论会有多条回复),按照映射策略,分为外键关联、表关联和默认关联。总结它们的使用方法如下:

1 外键关联

@OneToMany

@Entity
public class Comment{

    private String id;

    @OneToMany( mappedBy="comment", cascade = {CascadeType.REMOVE})   //mappedBy表示双向关系;cascade删除评论时级联删除回复
    @OrderBy( value="CREATED_DATE asc" )        //按创建日期升序查询
    private List<Reply> replyList = new ArrayList<>();
}

@ManyToOne

@Entity
public class Reply{

    private String id;

    @ManyToOne( fetch = FetchType.EAGER )       //关联取数据,eager表示立即加载; lazy表示懒加载,在对性能要求不高时使用
    @JoinColumn( name="COMMENT_ID", referencedColumnName= "ID")
    private Comment comment;
}

当fetch = FetchType.LAZY时,LAZY阻挡了除ID以外的所有访问,解决的办法有: 
1) 通过ID从数据

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值