The lazy=true
атрибут - увімкнути ледаче завантаження батьківських і дочірніх колекцій і те саме fetch="select"
атрибут. Чи є різниця між lazy="true"
і fetch="select"
в сплячому режимі ?.
Відповіді:
21 для відповіді № 1Так.
The lazy
атрибут говорить сплячий коли щоб отримати дітей.
The fetch
атрибут говорить сплячий як щоб отримати дітей.
Коли ти говориш
Атрибут lazy = true - це ввімкнути ледаче завантаження батьків і дитини Колекції та те саме fetch = "select" атрибут
це неправильно. Вибір стратегії вибору НЕ те саме, що відключення ледачого завантаження. Насправді, з документації
Виберіть отримання: другий SELECT використовується для отримання асоційованого сутність або колекція. Якщо ви явно не відключите ледачий пошук задаючи lazy = "false", цей другий вибір буде виконаний лише тоді, коли Ви отримуєте доступ до асоціації.
13 за відповідь № 2
Коли ми говоримо fetch="select"
, то він завжди буде запускати окремі запити для отримання об’єктів асоціації, навіть якщо вони є lazy ="false"
.
Але коли ми кажемо lazy ="true"
, це означає, що він отримає об’єкти асоціації в окремому запиті, але не під час завантаження об'єкта, а під час першого доступу до асоціації. Ми можемо це зробити, сказавши list().size()
.
Коли ми говоримо fetch="join"
він завжди буде запускати один запит, щоб отримати об'єкти асоціації з бази даних.
1 для відповіді № 3
Для вирішення n + 1 виберіть задачу для n запитів(батьківські стосунки) у сплячому режимі ми використовуємо fetch = "приєднатися" замість fetch = "select". Налаштування "Ледачий" визначає, чи потрібно завантажувати дочірні об'єкти під час завантаження батьківського об'єкта. Вам потрібно виконати цей параметр відповідному сплячому файлу відображення батьківського класу.Lazy = true (означає не завантажувати дитину) За замовчуванням ліниве завантаження дочірніх об'єктів є істинним .