Я наблюдал следующее в случае с ассоциацией JPA-HIbernate один к одному:
Когда связь один к одному с использованием Lazy fetch - запускаются запросы SELECT
class A {
@OneToOne(fetch = FetchType.LAZY, mappedBy = "a", cascade = { CascadeType.PERSIST, CascadeType.MERGE })
public B getB() {
return B;
}
}
Когда одинк одной ассоциации с использованием EAGER fetch - она запускает JOIN-запросы
class A {
@OneToOne(fetch = FetchType.EAGER, mappedBy = "a", cascade = { CascadeType.PERSIST, CascadeType.MERGE })
public B getB() {
return B;
}
}
Что я наблюдал, так это в случае 1, также нет ничего ленивого, но запросы SELECT запускаются почти сразу, когда загружается родительский объект.
Действительно ли ленивая загрузка действительно работает в случае конфигурации по умолчанию в JPA-Hibernate или всегда EAGER с запросами SELECT / JOIN?