Если вы используете «Get», то происходит попадание в базу данных.
Если вы используете Load, никакого попадания в базу данных не производится, но объект (в вашем случае User) создается с «отложенной загрузкой». Поэтому, когда вы проверяете свойство, оно знает, что вам нужны данные, поэтому оно обращается к базе данных с запросом для получения данных.
Если вы хотите получить объект из кэша, вам нужно рассмотреть 2 варианта.
Кэш первого уровня - это кэш, который используется в ОДНОМ сеансе. Поэтому, когда вы закрываете сеанс или загружаете один и тот же объект в другой сеанс, вы получаете дополнительные попадания.
Кэш второго уровня работает во всех сессиях. Если один сеанс получает объект, другой сеанс получает его из кэша.
Итак, вам нужен кэш второго уровня.