2012-03-31 64 views
1

寻找建议,以便有效地维护AppEngine for Java中的实体的基本审计字段(通过对象化)。对于各种日期字段(dateCreated,dateModified,dateDeleted),@PrePersist属性看起来是一个很好的选择,但我也希望存储创建,修改,删除实体的用户的ID。这最好留给数据访问层吗?AppEngine实体的审计字段

回答

1

如果您需要存储的记录不仅仅是您提到的日期,还可能需要创建一个审计对象并使用@Embed将其存储在您正在审计的对象中。然后使用@PrePersist来更新这个对象。这将为您提供跨对象的一致审计框架。

+0

如果我使用\ @PrePersist,如何获得用户ID?我们必须访问它的唯一方法是通过用户检索服务从HttpSession中抓取它。向域实体注入某种服务以获取此信息是否常见? – 2012-04-01 13:16:34

+0

是的。您可以从会话中获取它或从cookie中读取它。这完全取决于您的应用程序。通常,应用程序的DAO层将具有doUpdate(用户,实体)的方法 – 2012-04-01 18:39:52

+0

我们有一个DAO层,但我不确定我喜欢将用户传递给每个doUpdate方法的想法。 DAO层不应该内在地知道如何做到这一点? – 2012-04-07 22:11:44

0

恕我直言@PrePersist是一个可以执行此操作的好地方。

您也可能想要使用objectify's polymorphism - 这样您可以拥有包含所有审计字段的基类并执行保存。比所有需要审计的类都会扩展这个基类。