2017-09-29 8 views
1

は、このアプローチのいずれかの大きな利点があります:私が持っているようエンティティを使って "mapped by"というIDを使用することに利点がありますか? ?

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

は、(1秒は、カプセル化のための優れている

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

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

私の事...これに代えて... AとBクラスは異なるプロジェクトにあり、第2クラスは拳を参照する必要はありません)。

+1

他のオブジェクトが関連オブジェクトについて知る必要がある場合は、BIDIRECTIONALリレーションを設定します。 – DN1

答えて

1

一つの利点使用して、適切なJPAの関係は、データベースからのフェッチ、およびBを取得するために、A上の簡単なゲッターを使用できるようにすることです: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 
} 

もちろん、達成しようとしているものによって異なります。

+0

とは全く関係がありません。その関係を一方的に指定したアプローチでは、ユーザーのtom britoの最初の例は双方向であると言うのは公正だろうか? – user641887

+1

はい、正しいです。もちろん、単方向の場合でも、必要に応じて両方向の関係にアクセスできますが、手動でデータベースを参照する必要があります。 – brain99

関連する問題