繁体   English   中英

使用spring-data-jdbc进行审核?

[英]Auditing with spring-data-jdbc?

我已经在上一个问题中看到了答案! ,但并不能解决我的问题。

我跟踪了spring-data-jdbc的代码,发现只要自定义BeforeSaveEvent事件并在此事件中设置了自定义ID,在执行自定义事件后,它就会继续触发在上执行RelationalAuditingEventListener#onApplicationEvent已设置为ID的实体。 做出isNew决策,即New = false。

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

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

您所描述的内容对我来说似乎是个错误。 如果您在事件侦听器中设置ID,则仍应将其作为新实例进行处理。 请在https://jira.spring.io/browse/DATAJDBC中提交问题

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

作为解决方法,您可以将IsNewAwareAuditingHandler与事件处理程序结合使用以设置ID。

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

实体是通过其ID标识的对象,请注意,该ID可能是隐式的。 见下文。

聚集是一个(通常很小的)对象簇,它们属于在一起,并且在单个事务中持久存在。 例如, PurchaseOrder及其LineItem都是属于同一聚合的两个实体。 单个对象完全有可能是其自身的集合。

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

马丁·福尔斯(Martin Fowlers)的定义: https : //www.martinfowler.com/bliki/DDD_Aggregate.html

Vaughn Vernon撰写的有关聚合的精彩文章:

https://dddcommunity.org/wp-content/uploads/files/pdf_articles/Vernon_2011_1.pdf

https://dddcommunity.org/wp-content/uploads/files/pdf_articles/Vernon_2011_2.pdf

https://dddcommunity.org/wp-content/uploads/files/pdf_articles/Vernon_2011_3.pdf

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM