我工作的一个访问用户(休眠执行情况),春季和条纹网应用程序。我有一个号码的访问用户实体,具有以下领域的共同点为审计和查询的目的:

创建-user ID的人员创建的实体。createdOn-该日期的实体是创建 updatedBy-user ID的人最后更新的实体 updatedOn-该日期的实体是最后一次更新

我有我的程序的工作,以便createdOn和updatedOn是设定时自动的实体是持久的,但我不确定我怎么能得到创建和updatedBy领域填充,而不必通过目前登录用户的身份从控制器类Dao.

没有任何人有任何建议,我怎么可能这样做不经userid所有的地方?注意到当前用户标识是存在的HttpSession对象的时刻,使我的后端,需要以某种方式访问这种数据的...

谢谢!

有帮助吗?

解决方案 2

我已经决定,一个线程本地可能是最清洁的方式来这样做在我的应用程序。

其他提示

你可以看看一些方法来传递的用户标识作为背景下在业务层:

(员额可能仍然是相关的,即使你没有使用EJB。第二章意义,但是如果你只使用弹簧与JTA)

我阻止这些做法,因为我认为两个问题:

  • 可测性:环境数据,将需要设立的测试
  • 合同:上下文的数据参与合同使用实体,但是不清楚可见的接口。

通过userID"所有的地方"可能看起来像一个大的工作,但我认为这是吸尘器。

设定的日期和用户标识时自动实体创建或更新,可以使用 EntityListener或生命周期回调 (也许你已经在做的那)。希望它能帮助...

我想创建一个类似这样的:


@MappedSuperclass
public abstract class AuditableDomainClass {
  private long createdBy;
  private long updatedBy;

  //getters and setters

你的实体类有要求你所描述只会延长这一流的,你你变量层的需要(控制器,用于示例)并且你不需要担心它所有的方式在Dao.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top