使用实体+"有哪些优势?"过度使用id?

时间:2017-09-29 23:13:45

标签: java jpa ejb

这种方法有什么大的优势:

@Entity
public class A {
    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name = "ID_B")
    private B b;
}

@Entity
public class B {
    @OneToMany(mappedBy = "a", cascade = CascadeType.ALL)
    private List<A> aList;
}

......而不是这个?...

@Entity
public class A {
    @Column(name = "ID_B")
    private Long idB;
}

@Entity
public class B {
    //no reference to A
}

我认为第二个更适合封装(因为我在不同的项目中有A和B类,而第二个不需要引用拳头)。

1 个答案:

答案 0 :(得分:1)

一个优点是使用正确的JPA关系允许您从数据库中获取A,并在A上使用简单的getter来获取B:myA.getB()

如果您使用long,则需要在需要获取某些B时再次手动查询数据库。

请注意,您没有义务双向声明关系。这样的事情完全有效:

@Entity
public class A {
    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name = "ID_B")
    private B b;
}

@Entity
public class B {
    //no reference to A
}

当然,这完全取决于你想要达到的目标!