gpt4 book ai didi

java - JPA:我应该将 BLOB 存储在与 fetch Lazy 相同的表中,还是应该将其存储到另一个表并 fetch lazy 一对一关系

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:10:44 31 4
gpt4 key购买 nike

我有一个表 Image 保存图像信息。我还想存储图像本身。我也应该

1.将 Blob 存储在同一个图像表中,然后像下面这样延迟获取它

@Basic(optional = false, fetch = FetchType.LAZY)
@Lob
@Column(name = "IMAGE_BLOB", length=100000) //This will generate MEDIUMBLOB
private byte[] imageBlob;

或者

2.创建另一个表ImageBlob,与Image具有OneToOne关系,并延迟获取关系

@OneToOne(cascade = CascadeType.ALL, mappedBy = "image", fetch=FetchType.LAZY)
private ImageBlob imageBlob;

这两种技术在性能方面是否相同?

最佳答案

据我所知,第一个不适用于作为 JPA 提供程序的 Hibernate 和 EclipseLink。 LAZY 是对提供者的提示,这些将在不报告错误或警告的情况下急切加载。

只有启用了类编织,OneToOne 关联才会是惰性的,否则也无济于事。

我使用一个名为 LazyBlob 的完全独立的表来完成它,该表具有属性“entity”和“id”,并编写了一个实用程序类来从该表中延迟获取 lob。

关于java - JPA:我应该将 BLOB 存储在与 fetch Lazy 相同的表中,还是应该将其存储到另一个表并 fetch lazy 一对一关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10108533/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com