簡體   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