首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用spring-data-jdbc进行审计?

使用spring-data-jdbc进行审计?
EN

Stack Overflow用户
提问于 2019-07-08 09:40:32
回答 1查看 2K关注 0票数 1

我在以前的question!中看到了响应,但它并没有解决我的问题。

我跟踪了spring jdbc的代码,发现只要自定义RelationalAuditingEventListener#onApplicationEvent事件是自定义的,并且在这个事件中设置了自定义ID,在执行自定义事件之后,它将继续在已设置为ID的实体上触发BeforeSaveEvent的执行。isNew的决定是ieNew=false。

// IsNewAwareAuditingHandler#markAudited //触发markModified方法。entity.isNew(object) ? markCreated(object) : markModified(object);

聚合根和实体之间有什么区别?如何设计使用第一次保存时可以用@CreatedDate@CreatedBy保存的实现?@LastModifiedDate@LastModifyBy

EN

回答 1

Stack Overflow用户

发布于 2019-07-08 11:16:29

在我看来,你的描述听起来像是一只虫子。如果在事件侦听器中设置id,则仍应将其作为新实例处理。请向https://jira.spring.io/browse/DATAJDBC提交一个问题

如何设计在使用第一次保存时可以使用@CreatedDate和@CreatedBy保存的实现?@LastModifiedDate和@LastModifyBy?

作为一项工作,您可以将IsNewAwareAuditingHandler与您的事件处理程序组合起来,以设置id。

聚合根和实体之间有什么区别?

实体是由其id标识的对象,请注意,id可能是隐式的。见下文。

聚合是一个(通常是较小的)对象集群,它们属于一个事务并被持久化。例如,一个PurchaseOrder和它的LineItem都是属于同一个聚合的实体。一个对象完全有可能成为它自己的聚合。

聚合根是来自聚合的一个实体。与聚合成员的所有交互都应该通过聚合根进行。这允许聚合根控制一致性。例如,在上面给出的示例中,PurchaseOrder将是聚合根。因此,您将不会有一个返回项目生命集合的getItems() getter。相反,您可能需要addItem(productId, amount)getItems()返回项目的副本,因此更改它们不会影响聚合。

马丁·福尔斯的定义:Aggregate.html

Vaughn Vernon关于聚合体的伟大文章:

1.pdf

2.pdf

3.pdf

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56932174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档