我不确定用户和评论之间的实体关系,以便仅使用评论文本和用户ID保存评论

问题描述 投票:0回答:2

我是Hibernate的新手,我有一个基本的问题。我有两个实体类User和Comments,关系定义为One toMany,从用户到评论,manytoOne,from comments to user。现在,如果我的UI通过comment_text和user_id向我发回一些评论,保存它的最佳方法是什么?通过定义@ManyToOne私人用户用户;我需要使用整个用户对象来存储这些信息,但是,我只需要在表中存储带有user_id的注释,并在需要时查询用户信息。

我是Hibernate的新手,所以它可能只是基础知识,但有人可以帮助我吗?

hibernate
2个回答
1
投票

用户和注释之间的关系是多对多的,因此您可以尝试使用以下字段创建表:

  • 评论
  • 评论
  • 注释文本

0
投票

你的问题涉及2个非常重要的问题。

拥有完全连接的数据库模型是低性能和相当纠缠的一个方法。

从设计的角度来看,您可能不希望在创建,更新或删除评论时更改用户。因此,从Hibernate开始,您可以跳过CommentUser之间的关系,并在加载注释时以另一种方式获取用户信息(因为我假设您要在注释旁边显示用户名)。因此,当您收到一段文本和一个用户ID时,您可以直接存储,但请记住检查用户ID实际上是发布评论的用户ID,而不是发送伪造数据的人。

现在从用户的角度思考。加载用户时是否始终需要注释信息? (Hibernate将懒惰加载注释数据,因为默认情况下所有* toMany关系都是惰性的)。从设计的角度来看,实体连接越多,当您进行小的更改时,您有更多机会破坏。

在这种情况下帮助我的一件事是找出哪些数据一起更改或具有相互依赖的约束。如果没有,那么这些对象可以分开。如果您需要提高性能,可以使用一些只读实体来映射您的某些视图所需的所有数据。

我建议你阅读本书Implementing Domain-Driven Design,因为它触及了这些主题,它是关于设计的好建议的一个很好的来源,并且恰好在示例中使用Java + Hibernate!

© www.soinside.com 2019 - 2024. All rights reserved.