审核webapp中的JPA实体:如何获取登录用户?

时间:2013-01-29 13:59:11

标签: spring web-applications jpa auditing

我对JPA实体有一个简单的审核要求:保留创建和上次修改日期和作者。作者应该是当前登录的用户。

我想在基类或JPA拦截器(没有其他框架)上使用@PrePersist@PreUpdate注释来实现这一点。

但是,在这两种情况下,我都需要一种方法来访问当前登录的用户,该用户存储在HttpSession中。

如何从我的基本实体类或JPA拦截器上的方法访问此信息?

是否有任何最佳实践或任何测试方法如何实现?

我在想,可能会添加一个Web拦截器,对于每个请求,将登录的用户对象放入一个全局可访问的ThreadLocal(例如,在Spring单例服务中),这样就可以从任何地方查找它...

这听起来像个好主意吗?

欢迎任何建议!

编辑:在此处找到类似的问题(仅在通过右侧的建议发布我自己后才发现):Setting createdBy and updatedBy in JPA entities automatically

结论似乎是在ThreadLocal的方向......仍然,欢迎任何反馈!

1 个答案:

答案 0 :(得分:0)

如果您不使用远程(EJB)调用,那么使用ThreadLocal的想法应该有效,因为大多数容器对每个处理的请求使用一个线程。当您放置用户并删除它时,您需要小心,因为容器可能使用线程池,并且您不希望将用户对象附加到可能用于处理另一个请求的线程。

相关问题