【问题标题】:How does EclipseLink detect first access to make lazy fetching?EclipseLink 如何检测首次访问以进行延迟获取?
【发布时间】:2019-10-24 16:01:21
【问题描述】:

谁能解释一下 EclipseLink 如何检测对字段的第一次访问以进行延迟获取?似乎有一些magic,我找不到它是如何完成的。

如果我对@OneToMany 关系的理解正确,EclipseLink 会创建控制访问的org.eclipse.persistence.indirection.IndirectList 实例。但我不明白 EclipseLink 对@ManyToOne 关系做了什么。

【问题讨论】:

  • 那个magic 被称为proxy。您实际上得到的是一个代理对象,而不是实际的实体;返回代理的好处是我们可以通过初始化父@ManyToOne@OneToOne 等功能来增强对象。你可以阅读更多关于How does a JPA Proxy work

标签: java jpa jakarta-ee eclipselink


【解决方案1】:

在多对一或单对一的情况下,EclipseLink 会进行代码增强以检测访问。 这意味着你有一个代理而不是真实的对象。

有文档:

https://www.eclipse.org/eclipselink/documentation/2.7/concepts/mappingintro002.htm#CHDJAHDC

关于编织的章节也很有趣。 https://www.eclipse.org/eclipselink/documentation/2.7/concepts/app_dev005.htm#CCHJEDFH

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 2018-07-08
    相关资源
    最近更新 更多