我有两个实体,比如Client和Company (都是用户的子类)。
每个事件都有一个事件列表:ClientEvents和CompanyEvents
我们最初将这些表拆分(而不是使用 events 表)的原因是,每种类型的事件都不能混合(一次只能对一种事件进行操作)。这也将导致有2个较小的表而不是一个大表。
两种类型实体的属性和操作是相同的,因此我可以将其建模为:
@MappedSuperclass
public abstract class **Event** {...}
@Entity @Table(name="client_event")
public class **ClientEvent** {...}
@Entity @Table(name="company_event")
public class **CompanyEvent** {...}现在是否有一种方法可以在DAO中查询每种类型的特定事件而不重复方法(使用hibernate或JPA,也许泛型在这里是有用的)?
发布于 2012-09-25 14:29:39
它取决于表的大小(事件总数)、希望将这些事件保存在活动表中的时间、新事件的频率以及对旧事件的检索。
如果新事件不频繁,可以保留一个表。如果新事件非常频繁,并且需要经常搜索它们,那么最好有两个单独的表。
通过将这些旧事件归档到一个表中,可以加快搜索/检索速度。
简而言之,任何设计都取决于企业的需要。
多个表将使您能够更快地搜索,而单个表将使您更容易访问和简化代码/设计。
对于访问,您可以使用相同的方法,只需将事件类型作为参数传递,并在此基础上构建查询。
https://stackoverflow.com/questions/12584526
复制相似问题