2013-07-01 3 views
1

Я разрабатываю пример приложения, использующего спящий режим. Это происходит довольно гладко, но у меня есть один небольшой запрос относительно отношения одного к большому. я видел есть 2 способа определить соотношениеОт одного к другому отношение другой вариант

@OneToMany(cascade = CascadeType.ALL) 
@JoinTable(name = "STUDENT_PHONE", joinColumns = { @JoinColumn(name = "STUDENT_ID") },  inverseJoinColumns = { @JoinColumn(name = "PHONE_ID") }) 
public Set<Phone> getStudentPhoneNumbers() { 
return this.studentPhoneNumbers; 
} 

другой путь

@OneToMany(fetch=FetchType.EAGER) 
@JoinColumn(name="PERSON_ID", nullable=false) 
public Set<Address> getAddresses() { 
    return addresses; 
} 

, который является более эффективным и когда использовать, какой метод.

ответ

0

Второй вариант, вероятно, более эффективен, потому что ему требуется одно соединение меньше первого.

Но он соединяет много сторон (адрес) с одной стороны (человеком), требуя внешнего ключа в таблице адресов. Это противоречит тому, что ассоциация является однонаправленной (адрес не знает о ее лице в объектной модели).

Именно поэтому второй по умолчанию используется для однонаправленных друг к другу ассоциаций.

Смежные вопросы