加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

hibernate – 自动在JPA实体中设置createdBy和updatedBy

发布时间:2020-12-15 01:34:21 所属栏目:大数据 来源:网络整理
导读:我正在开发一个JPA(Hibernate实现),Spring和Stripes Web应用程序.我有许多JPA实体,它们具有以下共同的审计和查询字段: createdBy 创建实体的人员的用户ID. createdOn 创建实体的日期 updatedBy 上次更新实体的人员的用户ID updatedOn 实体上次更新的日期 我

我正在开发一个JPA(Hibernate实现),Spring和Stripes Web应用程序.我有许多JPA实体,它们具有以下共同的审计和查询字段:

createdBy – 创建实体的人员的用户ID.
createdOn – 创建实体的日期
updatedBy – 上次更新实体的人员的用户ID
updatedOn – 实体上次更新的日期

我有我的应用程序工作,以便在实体持久化时自动设置createdOn和updatedOn但我不知道如何填充createdBy和updatedBy字段而不必一直通过当前登录用户的ID从控制器类到DAO.

有没有人有任何关于如何在不通过所有地方传递用户ID的情况下这样做的建议?请注意,当前用户ID目前存储在HttpSession对象中,因此我的后端需要以某种方式访问??此数据…

谢谢!

最佳答案
您可以查看其中一种方法,将用户ID作为业务层中的上下文传递:

> How To Pass Context Between Layers With ThreadLocal And EJB 3
> How To Pass Context In Standard Way – Without ThreadLocal

(即使你没有使用EJB,这些帖子仍然可能是相关的.第二篇文章只有在你使用Spring和JTA时才有意义)

我个人不鼓励这些方法,因为我认为它有两个问题:

>可测试性:需要在测试中设置上下文数据
>合同:上下文数据参与合同以使用实体,但在界面中不清晰可见.

传递用户ID“到处都是”可能看起来像个大工作,但我认为它更干净.

要在创建或更新实体时自动设置日期和用户ID,您可以使用EntityListener or lifecycle callbacks(也许您已经这样做了).
希望能帮助到你…

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读