[英]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.