2012-10-08 78 views
2

我有一個名爲Token的對象。它有id,名字和價值。保存一些數據DB後,我已加載到他們的網頁使用休眠保存列表更改

_____________________________________________ 
|____name____|____value____|____operation____| 
    tkn1   10    × 
    tkn2   20    × 

×跡象使我刪除服務器收集 令牌現在。我已經加入令牌tkn3值爲30和刪除tkn2所以 表將是:

_____________________________________________ 
|____name____|____value____|____operation____| 
    tkn1   10    × 
    tkn3   30    × 

隨着這些變化的收集,我怎麼能體現他們進入數據庫 如何確定刪除的記錄,和記錄添加?

我拖應用解決方案:

  1. 我比較-in商業邏輯層 - 用新的數據 舊數據和發現的,然後發送到數據庫兩個列表的區別,第一個是包含 的添加令牌,第二個包含要刪除的令牌的ID。
  2. 我添加了一個名爲狀態的對象..當我添加標誌是新的 當我刪除我只是設置標誌刪除,並在數據庫層我迭代集合 一個接一個對象,並檢查標誌..如果NEW然後添加記錄,如果刪除,刪除它 如果得救(無變化)我沒有改變它..

我的問題:

  • 是這樣好做這個任務..?
  • 是否有模式來完成此任務?
  • Hibernate能幫我做到嗎?

回答

0

的打擊實體應該解決您的問題。

@Entity 
public class MyEntity { 

private static enum Status { 
    NEW, 
    PERSISTENT, 
    REMOVED 
} 

@Id 
private Long id; 

private String name; 
private int value; 

@Transient 
private Status uiStatus = Status.NEW; 

public Long getId() { 
    return this.id; 
} 

public String getName() { 
    return this.name; 
} 

public Status getUiStatus() { 
    return this.uiStatus; 
} 

public int getValue() { 
    return this.value; 
} 

@PostLoad 
public void onLoad() { 
    this.uiStatus = Status.PERSISTENT; 
} 

public void setId(Long id) { 
    this.id = id; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public void setUiStatus(Status uiStatus) { 
    this.uiStatus = uiStatus; 
} 

public void setValue(int value) { 
    this.value = value; 
} 
}