这篇文章主要介绍如何使用Spring和Hibernate自定义审计日志,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!如果您需要对所有数据库操作进行自动审计,并且您正在使用 Hibernate……您应该使用Envers
或spring data jpa auditing
。但是如果由于某些原因您不能使用 Envers
,您可以使用 hibernate
事件侦听器和 spring
事务同步来实现类似的功能。首先,从事件监听器开始。您应该捕获所有插入、更新和删除操作。但是有一个棘手的问题——如果您出于任何原因需要刷新会话,则不能使用传递给事件侦听器的会话直接执行该逻辑。在我的情况下,我必须获取一些数据,并且 hibernate
开始向我抛出异常(“id 为 null”)。多个来源确认您不应在事件侦听器中与数据库交互。因此,您应该存储事件以供以后处理。您可以将侦听器注册为 spring bean,如下所示:请注意AuditedEntity
– 它是一个自定义标记注释(retention=runtime
, target=type
),您可以将其放在实体之上。由于我有 spring 可供我使用的AuditLogServiceData
,所以在我的示例上我决定使用 spring:除了存储事件之外,我们还需要存储正在执行操作的用户。为了得到它,我们需要提供一个方法参数级别的注释来指定一个参数。在我的例子中的注释被称为AuditLogActor(retention=runtime, type=parameter)
。现在剩下的是处理事件的代码。我们希望在提交当前事务之前执行此操作。如果事务在提交时失败,审计条目插入也将失败。我们用一点 AOP 来做到这一点:就我而言,我不得不注入额外的服务,而 spring 抱怨相互依赖的 bean,所以我改为使用applicationContext.getBean(FooBean.class)
.注意:确保您的方面被 spring 捕获 – 通过自动扫描或通过 xml/java-config 显式注册它。因此,经免费云主机域名过审计的调用将如下所示:总结一下:hibernate 事件监听器将所有插入、更新和删除事件存储为 Spring 事务同步资源。一个方面向 spring 注册一个事务“回调”,它在每个事务提交之前被调用。在那里处理所有事件并插入相应的审计日志条目。这是非常基本的审计日志,它可能在收集处理方面存在问题,而且它肯定没有涵盖所有用例。但它比手动审计日志处理要好得多,并且在许多系统中,审计日志是强制性功能。以上是“如何使用Spring和Hibernate自定义审计日志”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注百云主机行业资讯频道!
这篇文章主要介绍了Java中如何使用Netty的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java中如何使用Netty文章都会有所免费云主机域名收获,下面我们一起来看看吧。Java的底层API逐渐复杂,而开发者面对的开发场景需求…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。