Java JPA @OneToMany должен был оплатить @ManyToOne?

Create Table A (
ID varchar(8),
Primary Key(ID)
);

Create Table B (
ID varchar(8),
A_ID varchar(8),
Primary Key(ID),
Foreign Key(A_ID) References A(ID)
);

Учитывая, что я составил две таблицы с помощью SQL-операторов выше, и я хочу создать Entity классы для них, для класса B, У меня есть эти членские атрибуты:

@Id
@Column(name = "ID", nullable = false, length = 8)
private String id;
@JoinColumn(name = "A_ID", referencedColumnName = "ID", nullable = false)
@ManyToOne(optional = false)
private A AId;

В классе A, я должен оплатить many-one отношения?

@Id
@Column(name = "ID", nullable = false, length = 8)
private String id;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "AId")
private List<B> BList; //<-- Is this attribute necessary?

Действительно ли это - необходимое или хорошая идея иметь обратную величину @OneToMany для @ManyToOne? Если я делаю проектное решение не учесть @OneToMany аннотируемый атрибут теперь, который возвратился бы, чтобы укусить меня далее вперед?

7
задан bguiz 8 November 2010 в 23:03
поделиться

2 ответа

Нужна ли или хорошая идея иметь ответный @OneToMany для @ManyToOne?

Нет, это не так. вообще обязательно, это чисто дизайнерское решение. Весь вопрос в том ... Хотите ли вы это (т.е. однонаправленную ассоциацию):

uni-directional

Или это (т.е. двунаправленную ассоциацию):

bi-directional

Если вам не нужно получать B от A, тогда вы можете пропустить атрибут bs и OneToMany на стороне A.

Если я приму дизайнерское решение опустить аннотированный атрибут @OneToMany сейчас, я вернусь, чтобы еще больше укусить меня.

Нет, и вы можете добавить его позже, если обнаружите, что он вам нужен.

12
ответ дан 6 December 2019 в 15:19
поделиться

Они необязательны. Нет необходимости добавлять их в вашу модель, если вы не хотите их использовать.

Я бы посоветовал вообще избегать обратного отображения, потому что такие коллекции могут стать довольно большими, а большинство уровней персистентности не очень хорошо с ними справляются. Во многих случаях вам придется самостоятельно заниматься добавлением/удалением уже загруженных/управляемых сущностей, связанных с этими коллекциями. Поэтому добавляйте их только в том случае, если они действительно облегчат вам работу.

2
ответ дан 6 December 2019 в 15:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: