Можно ли кэшировать объект спящего режима ManyToOne, не загружая его лениво? - PullRequest
1 голос
/ 14 января 2011
@ManyToOne
@JoinColumn(name = "play_template_id", table = "team_play_mapping" )
public Play getPlay() {
    return play;
}

public void setPlay( Play play ) {
    this.play = play;
}

По умолчанию это нетерпеливая загрузка.Могу ли я получить его так, чтобы он читал игровой объект из кэша, не делая его ленивой загрузки?Правильно ли я понимаю, что энергичная загрузка заставит его выполнить запрос соединения и, следовательно, не будет кэшировать?

1 Ответ

2 голосов
/ 14 января 2011

Стремительная загрузка и отложенная загрузка - это стратегии извлечения.Это означает, что если вы укажете «нетерпеливую» загрузку, она выполнит как можно меньше запросов, а если вы укажете «ленивый», то постит запрос для этого объекта как можно дольше (рискуя выполнить больше запросов).Итак, если вы хотите, чтобы что-то было извлечено из кэша, вам нужна стратегия отложенной загрузки, то есть: не извлекайте данные из базы данных без необходимости.

Однако вы можете попробовать применить определенный профиль выборки, основанный на том, какой код выполняет запрос.Например, в какой-то момент кода ваш запрос знает, что лучше загружать Play, а позже вы узнаете, что было бы лучше лениво загрузить Play.

http://docs.jboss.org/hibernate/core/3.5/reference/en/html/performance.html#performance-fetching-profiles

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