如何通过Hibernate/JPA的字节码增强进行属性延迟加载?

19-01-30 banq
                   

默认情况下,Hibernate/JPA实体的属性是急切加载的(一次性全部加载)。你确定这是想要的吗?

如果不是,那么重要的是要知道可以通过Hibernate字节码检测来延迟加载属性(另一种方法是通过子实体)。这对于存储大量数据的列类型有用:CLOB,BLOB,VARBINARY,等。

关键点:

  • 对于Maven,在pom.xml,激活Hibernate字节码检测(例如,如下使用Maven字节码增强插件)
  • 标记应该延迟加载的列 @Basic(fetch = FetchType.LAZY)

实现案例:

  • 创建一个新用户: localhost:8080/new
  • 获取没有头像的用户(这是图片javax.persistence.Lob- 因此,大量数据:localhost:8080/user
  • 使用头像获取用户(懒惰加载): localhost:8080/avatar

源代码可以在这里找到  。