используя режим извлечения в спящем режиме - PullRequest
6 голосов
/ 21 января 2012

Скажем, у нас есть отношения один-ко-многим между клиентом и телефоном.

class Customer{

@OneToMany(cascade = {CascadeType.ALL},mappedBy = "customer", fetch = FetchType.LAZY)
@Fetch( FetchMode.SELECT)
private List<Phone> phoneList;

}

В приведенном выше коде, в чем разница между fetch = FetchType.LAZY и FetchMode.SELECT.

Я прочитал, что они оба одинаковые, т.е. они оба лениво загрузили основную коллекцию.

Может кто-нибудь объяснить мне, какой использовать когда?

1 Ответ

13 голосов
/ 21 января 2012

Тип выборки (lazy / eager) относится к , когда Hibernate извлечет ассоциацию, будь то заблаговременно, когда она выбирает объект (страстно желающий), или ожидает ли код запроса об ассоциацииленивый).

Режим выборки (выбор / объединение) относится к как Hibernate извлечет ассоциацию, т. Е. Использует ли он дополнительный оператор SELECT или использует соединение.

Некоторые их комбинации не имеют смысла, например, lazy + join.Если вы используете отложенную выборку, то вы можете выбрать только режим выборки SELECT.

Если вы используете активную выборку, то вы можете выбрать любой режим выборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...