在我的应用程序中,用户可以发布文章。其他用户可以喜欢这些文章。
文章类:
@Entity
public class Article {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "article_id")
private int id;
@Column(name = "article_title")
private String articleTitle;
@OneToMany(mappedBy = "event")
private List<PeopleWhoLiked> peopleWhoLiked;
}
@Entity
public class PeopleWhoLiked {
@EmbeddedId
private PeopleWhoLiked id;
@ManyToOne @MapsId("articleId")
private Article article;
@ManyToOne @MapsId("userId")
private User user;
}
还有类别实体。每篇文章都有一个类别。
public class Category {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "category_id")
private int id;
@NotEmpty
@Column(name = "categoryName")
private String categoryName;
@OneToMany(mappedBy = "article")
private List<Article> articleList;
}
我的喜欢表
Article_id User_id
x x
这些都是相关表的外键。
使用
category.getArticleList();
功能我可以向用户显示文章。他们可以喜欢文章。但事情是系统不知道如果用户已经喜欢该文章。总是喜欢按钮处于活动状态。
查询(在Like表上为每篇文章选择语句)看起来有很大的时间复杂性和系统过载。)即使我这样做,我怎么能将它发布到只有{{1的thymeleaf th:each
语句中对象。
我认为每次使用一个选择语句查询10篇文章听起来不错。但是我又如何通过Article对象将其传递给百里香。
答案 0 :(得分:0)
您的性能问题是由每行的额外请求引起的。
对于1选择返回100行,您需要添加100个选择数据库。
如果您需要显示复杂的结果构建视图,而不是将视图结果映射到@Entity类,该类仅用于演示目的。