Я прочитал документацию Axon и просмотрел все предоставленные образцы проектов, особенно AxonBank , на который я ссылаюсь здесь, но одна вещь все еще беспокоит меня и, насколько я понимаю, не объясняется :
Насколько я понимаю, в Axon вы выполняете запросы к базе данных чтения, которая представляет материализованное представление, например H2, который содержит последнюю BankAccount
сущность JPA ( здесь ). Однако, если у вас есть репозиторий Spring, например JpaRepository<BankAccount, Long>
( здесь ), у вас также есть метод save
, который следует использовать только для команд. Разве вы не должны разделить репозиторий на репозиторий только для чтения и только для записи?
Может ли кто-нибудь также указать мне документацию, как Axon работает с этим репозиторием? Потому что для унифицированного разработчика это выглядит как «нормальный» репозиторий JPA, то есть объект кажется изменяемым и всегда актуальным. создается путем применения всех событий, происходит ли это в фоновом режиме с Axon?
Что произойдет, если я обновлю объект с помощью JpaRepository#save
, но не агрегат? Будут ли они рассинхронизированы? c?
Похоже, что у нас есть два источника истины в этом случае, чего не должно быть теоретически.