代码之家  ›  专栏  ›  技术社区  ›  Student

与使用id相比,使用实体+“mapped by”有什么优势吗?

  •  1
  • Student  · 技术社区  · 7 年前

    这种方法有什么大优势吗

    @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
    }
    

    1 回复  |  直到 7 年前
        1
  •  1
  •   brain99    7 年前

    一个优点是,使用适当的JPA关系可以从数据库中获取A,并使用A上的简单getter获取B: myA.getB()

    请注意,您没有义务双向声明关系。这样的话是完全正确的:

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

    当然,这一切都取决于你想要实现什么!