2012-10-08 76 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; 
} 
}