Java 使用实体+有什么优势吗&引用;映射为;过度使用身份证?
这种方法是否有很大的优势:Java 使用实体+有什么优势吗&引用;映射为;过度使用身份证?,java,jpa,ejb,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 {
@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;
}
我认为第二个更适合于封装(因为我在不同的项目中有A和B类,第二个不需要引用第一个)。一个优点是,使用适当的JPA关系可以从数据库中获取A,并使用A上的简单getter获取B:
myA.getB()
如果使用长时间,则在需要获取一些B时,需要始终手动再次查询数据库
请注意,您没有义务双向声明关系。像这样的东西是完全正确的:
@Entity
public class A {
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name = "ID_B")
private B b;
}
@Entity
public class B {
//no reference to A
}
当然,这完全取决于你想要实现什么 那么,公平地说,在你给出的方法中,关系是单向的,用户tom brito的第一个示例是双向的吗?是的,这是正确的。当然,即使在单向情况下,如果需要,也可以在两个方向上访问关系,但这需要手动数据库查找。如果其他对象需要了解其相关对象,则可以放置双向关系。这与“更好”无关
@Entity
public class A {
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name = "ID_B")
private B b;
}
@Entity
public class B {
//no reference to A
}