我有NEWS
表,与TAGS
一个(名为NEWS_TAG
的连接表)和相应的实体有多对多关系。
任务是获取标签,其中包含用其标记的新闻数量。可以在每个选项中简单地使用COUNT
函数,但为了提高性能,我将NEWS_COUNT
列添加到TAGS
表。
NEWS_COUNT
会被更改。
如何管理
JPA的NEWS_COUNT
属性?如果我能够以某种方式找出持久性提供程序修改NEWS_TAG
表的时间并相应地更改NEWS_COUNT
标记,那就太棒了。
答案 0 :(得分:1)
通过添加不必要的字段(NEWS_COUNT
),您必须为每个删除或添加操作更新实体,这会降低性能。您根本不需要该字段,如果您已正确配置表和实体,您用于关联实体的集合类型的基础,您可能会获得每个NEWS
的计数TAG
} size()
函数:tag.news.size()
或者您可以在JPQL中使用count
函数。
但是我不知道这个场景,也许你很少进行 CRUD 操作,但是你的计数太多了,在这种情况下,最好的方法是使用TRIGGERS
要以这种方式更新该字段(如果您的数据库系统支持它),NEWS_COUNT
始终会更新,您不需要在应用程序层中执行任何操作。如果您未使用数据库系统内部的机制来更新NEWS_COUNT
字段,那么在您的应用程序层中,您必须更新实体并增加或减少每个{{}字段1}}或add
操作。