我正试图在两个表User
和Country
之间创建休眠映射,如下图所示。
Country
表仅用于用户,而没有其他地方使用,因此我应该使用Embedded和Embeddable创建这些表,或者在创建表后仅执行多对一映射。
答案 0 :(得分:1)
这取决于您的使用方式。如果您嵌入国家/地区数据,则该数据将在“用户”表中,并会加载用户数据。
如果在大多数情况下每次使用用户数据时都不需要国家/地区数据,则可以使用延迟初始化进行OneToMany映射。在这种情况下,仅在需要时才加载国家/地区数据,但要付出额外的数据库命中费用(可能会减少为联接)。
答案 1 :(得分:1)
这取决于您要何时加载国家/地区数据。如果使用嵌入式,则将在用户数据加载时加载国家/地区数据。但是如果您使用具有延迟初始化的OneToMany映射,则将在加载国家/地区数据时加载国家/地区数据。你需要它。 因此,这取决于您的使用。
答案 2 :(得分:0)
这是更个人的东西。有些人喜欢使用Embedded来抽象一些信息,而另一些人则更加纯粹。
根据我的经验,我更喜欢将实体映射为非常接近表上的实体。原因很简单:
正如已经提到的其他答案一样,您将始终将Country
信息与User
一起使用嵌入式。这是 EAGER 行为,通常在JPA / Hibernate上应避免。
因此,在您的情况下,我将使用多对一关系。