4.10. 字节码增强


4.10.1. lazy Attribute Loading

lazy 属性加载是一种字节码增强,它允许您告知 Hibernate,从数据库获取时仅应加载实体的特定部分,以及应在何时加载其他剩余部分。这与基于代理加载的理念不同,后者是实体中心,即在需要时一次性加载实体的状态。通过字节码增强,根据需要加载各个属性或属性组。

可以将 lazy 属性指定为一起加载,这称为 lazy 组。默认情况下,所有单数属性都是单个组的一部分。访问一个 lazy singular 属性时,会加载所有 lazy 单数属性。与单片组不同,lazy 复数属性是各个离散的 lazy 组。此行为可通过 @org.hibernate.annotations.LazyGroup 注释显式控制。

@Entity
public class Customer {

    @Id
    private Integer id;

    private String name;

    @Basic( fetch = FetchType.LAZY )
    private UUID accountsPayableXrefId;

    @Lob
    @Basic( fetch = FetchType.LAZY )
    @LazyGroup( "lobs" )
    private Blob image;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public UUID getAccountsPayableXrefId() {
        return accountsPayableXrefId;
    }

    public void setAccountsPayableXrefId(UUID accountsPayableXrefId) {
        this.accountsPayableXrefId = accountsPayableXrefId;
    }

    public Blob getImage() {
        return image;
    }

    public void setImage(Blob image) {
        this.image = image;
    }
}
Copy to Clipboard Toggle word wrap

在上例中,有两个 lazy 属性:accounts PayableXrefIdimage。这些属性各自属于不同的获取组。accountsPayableXrefId 属性是默认 fetch 组的一部分,这意味着访问 accountsPayableXrefId 不会强制加载 映像 属性,反之亦然。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat