2012-09-25 41 views
0

我有2個實體多個實體模型,假設客戶公司用戶的兩個子類)。
每有活動的列表:ClientEventsCompanyEvents如何使用相同的字段和功能

我們已經在第一(而不是用活動表會)分手了這些表的原因是各種事件不混合(一次只能在一種事件上操作)。這也會導致有兩個小表而不是一個大表。

  1. 這是一個好方法嗎? (大表數據量〜1M)
    也許不需要將這些表分成兩部分,只是使用繼承?
  2. 什麼是將其建模爲實體的最佳方式?

這兩種類型的實體的屬性和操作都相同,故我能模型,可以:

@MappedSuperclass 
public abstract class **Event** {...} 
@Entity @Table(name="client_event") 
public class **ClientEvent** {...} 
@Entity @Table(name="company_event") 
public class **CompanyEvent** {...} 

現在有沒有一種方法來查詢每種類型的特定事件而不要重複在DAO的方法(用休眠或JPA,也許泛型將在這裏使用)?
3.在像這樣的情況下(兩個獨立的生命但是相同的屬性和操作)在模型化數據庫表和實體時是否存在「經驗法則」?

回答

1

它取決於表格的大小(總共事件數量),您希望將這些事件保留在活動表格中的時間,新事件的頻率以及舊事件的檢索。

如果新事件不頻繁,您可以保留一張表。如果新事件非常頻繁,並且需要經常搜索,最好有兩個單獨的表格。

通過將這些舊事件歸檔到一個表中,可以更快地進行搜索/檢索。

總之,任何設計都取決於企業的需求。

多個表格將允許您更快地搜索,而單個表格會讓您輕鬆訪問和簡化代碼/設計。

對於訪問,您可以使用相同的方法,只需傳遞事件類型作爲參數並根據該參數構建查詢。

相關問題