Hibernate 文档说明了以下内容:
5.1.6.5。将一个实体映射到多个表
虽然不推荐用于新模式,但某些遗留数据库会强制您的 [原文如此] 将单个实体映射到多个表上。
我已经阅读了大量有关数据库规范化的内容,但我并不真正了解如何既规范化数据库又不将实体映射到多个数据库表上,除非您映射多个不同的实体并手动执行奇怪的连接语句。或者,您映射 7 个不同的实体并将它们传输到一个 POJO。是否有地方展示了如何开发一个“新模式”,它既是规范化的,又需要一个实体来从数据库数据转换为 java 对象?
另外,我知道在当今廉价存储的世界中完全规范化不是必需的,但我发现这个声明与我读过的所有其他内容不一致。我正在寻找规范化到非规范化的平衡,但没有找到使用 Java Persistence API 的简单方法。
编辑:
例子:
如果我有一个具有以下内容的用户实体:
@Entity
public class User {
long id;
String name;
String email;
int countryCode;
List<Images> uploadedImages;
}
我不会将用户的国家名称和图像集合存储在同一张桌子上,而是将国家放在一张桌子上:
Table Countries Country_Code Country_Name
AF Afghanistan etc....
使用国家代码和国家名称,然后打开,并将图像上传到带有用户 ID 的单独表格中,
Table UploadedImages User_Id Image_Name Image_Url
1 Hello.jpg Amazon S3
1 Goodbye.jpg Photobucket
那么我如何只用一个实体来做到这一点呢?或者我是否使用来自第一个实体的信息从数据库中获取三个单独的实体?如您所知,我对基本架构有点困惑,如何将上面的数据转换为 java 对象?