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
аннотируемый атрибут теперь, который возвратился бы, чтобы укусить меня далее вперед?
Нужна ли или хорошая идея иметь ответный @OneToMany для @ManyToOne?
Нет, это не так. вообще обязательно, это чисто дизайнерское решение. Весь вопрос в том ... Хотите ли вы это (т.е. однонаправленную ассоциацию):
Или это (т.е. двунаправленную ассоциацию):
Если вам не нужно получать B от A, тогда вы можете пропустить атрибут bs
и OneToMany
на стороне A.
Если я приму дизайнерское решение опустить аннотированный атрибут @OneToMany сейчас, я вернусь, чтобы еще больше укусить меня.
Нет, и вы можете добавить его позже, если обнаружите, что он вам нужен.
Они необязательны. Нет необходимости добавлять их в вашу модель, если вы не хотите их использовать.
Я бы посоветовал вообще избегать обратного отображения, потому что такие коллекции могут стать довольно большими, а большинство уровней персистентности не очень хорошо с ними справляются. Во многих случаях вам придется самостоятельно заниматься добавлением/удалением уже загруженных/управляемых сущностей, связанных с этими коллекциями. Поэтому добавляйте их только в том случае, если они действительно облегчат вам работу.