加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – JPA:即使使用了getter方法,也不会加载延迟加载.希望如

发布时间:2020-12-15 04:11:39 所属栏目:Java 来源:网络整理
导读:你能简单解释一下下面的短语是什么意思: A relationship that is specified or defaulted to be lazily loaded might or might not cause the related object to be loaded when the getter method is used to access the object. The object might be a pr
你能简单解释一下下面的短语是什么意思:

A relationship that is specified or defaulted to be lazily loaded
might or might not cause the related object to be loaded when the
getter method is used to access the object. The object might be a
proxy,so it might take actually invoking a method on it to cause it
to be faulted in. (Pro JPA 2: Mastering the Java Persistence API,page 102)

我的问题是:

>这是否意味着即使在getLazyLoadedObj()方法之后也可能无法加载lazy_loaded_object?
>如果第一个问题的答案是“是”,那么从getLazyLoadedObj()方法返回的答案是什么?
>如果lazy_loaded_object是代理,我仍然不明白会发生什么变化.请给我解释一下.

先感谢您.

解决方法

1)是的

2)模型对象的子类,其中包含额外的代码,用于在调用getter时设置属性.

3)你可以想象你在调用时获得的对象,比如说,getPerson()访??问一个Lazily Loaded PersonEntity可能看起来像这样:

public class LazyPersonEntity extends PersonEntity {

  private PersonEntity lazilyLoadedPerson;

  @Override
  public String getName() {
    if (lazilyLoadedPerson == null) {
      lazilyLoadedPerson = runQueryToLoadPerson();
    }
    return lazilyLoadedPerson.getName();
  }
}

显然,这不是生成的代码真正的样子,但在功能上它是正在发生的事情.所以,当你执行getPerson()时,你得到的是一个LazyPersonEntity实例,在你调用getName()之前仍然没有查询

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读