diff --git a/README.md b/README.md index 8bc5cc09..80379e53 100644 --- a/README.md +++ b/README.md @@ -13,9 +13,11 @@ Tutorial, practical samples and other resources about Event Sourcing in JVM. See - [Retrieving the current state from events](#retrieving-the-current-state-from-events) - [Event Store](#event-store) - [Videos](#videos) + - [Practical introduction to Event Sourcing with Spring Boot and EventStoreDB](#practical-introduction-to-event-sourcing-with-spring-boot-and-eventstoredb) - [Let's build the worst Event Sourcing system!](#lets-build-the-worst-event-sourcing-system) - [The Light and The Dark Side of the Event-Driven Design](#the-light-and-the-dark-side-of-the-event-driven-design) - [Conversation with Yves Lorphelin about CQRS](#conversation-with-yves-lorphelin-about-cqrs) + - [How to deal with privacy and GDPR in Event-Sourced systems](#how-to-deal-with-privacy-and-gdpr-in-event-sourced-systems) - [Support](#support) - [Samples](#samples) - [Event Sourcing with Spring Boot and EventStoreDB](#event-sourcing-with-spring-boot-and-eventstoredb) @@ -186,6 +188,10 @@ Read more in my article: ## Videos +### Practical introduction to Event Sourcing with Spring Boot and EventStoreDB + +Practical introduction to Event Sourcing with Spring Boot and EventStoreDB + ### Let's build the worst Event Sourcing system! Let's build the worst Event Sourcing system! @@ -290,6 +296,7 @@ Read also more on the **Event Sourcing** and **CQRS** topics in my [blog](https: - 📝 [How using events helps in a teams' autonomy](https://event-driven.io/en/how_using_events_help_in_teams_autonomy/?utm_source=event_sourcing_jvm) - 📝 [What texting your Ex has to do with Event-Driven Design?](https://event-driven.io/en/what_texting_ex_has_to_do_with_event_driven_design/?utm_source=event_sourcing_jvm) - 📝 [What if I told you that Relational Databases are in fact Event Stores?](https://event-driven.io/en/relational_databases_are_event_stores/?utm_source=event_sourcing_jvm) +- 📝 [Are Temporal Tables an alternative to Event Sourcing?](https://event-driven.io/en/temporal_tables_and_event_sourcing/?utm_source=event_sourcing_jvm) - 📝 [Optimistic concurrency for pessimistic times](https://event-driven.io/en/optimistic_concurrency_for_pessimistic_times/?utm_source=event_sourcing_jvm) - 📝 [Outbox, Inbox patterns and delivery guarantees explained](https://event-driven.io/en/outbox_inbox_patterns_and_delivery_guarantees_explained/?utm_source=event_sourcing_jvm) - 📝 [Saga and Process Manager - distributed processes in practice](https://event-driven.io/en/saga_process_manager_distributed_transactions/?utm_source=event_sourcing_jvm) diff --git a/samples/event-sourcing-esdb-aggregates/README.md b/samples/event-sourcing-esdb-aggregates/README.md index a5760d80..1e58a12f 100644 --- a/samples/event-sourcing-esdb-aggregates/README.md +++ b/samples/event-sourcing-esdb-aggregates/README.md @@ -12,6 +12,12 @@ The presented use case is Shopping Cart flow: Technically it's modelled as Web API written in [Spring Boot](https://spring.io/projects/spring-boot) and [Java 17](https://www.oracle.com/java/technologies/downloads/). +## Watch the video + +Practical introduction to Event Sourcing with Spring Boot and EventStoreDB + +Practical introduction to Event Sourcing with Spring Boot and EventStoreDB + ## Main assumptions - explain basics of Event Sourcing, both from the write model ([EventStoreDB](https://developers.eventstore.com/)) and read model part ([PostgreSQL](https://www.postgresql.org/) and [Spring Data JPA](https://spring.io/projects/spring-data-jpa)), - present that you can join classical approach with Event Sourcing without making a massive revolution, diff --git a/samples/event-sourcing-esdb-aggregates/build.gradle b/samples/event-sourcing-esdb-aggregates/build.gradle index 8f441fda..de343e31 100644 --- a/samples/event-sourcing-esdb-aggregates/build.gradle +++ b/samples/event-sourcing-esdb-aggregates/build.gradle @@ -14,27 +14,27 @@ repositories { dependencies { // Spring Boot Web - implementation 'org.springframework.boot:spring-boot-starter-websocket:2.6.4' + implementation 'org.springframework.boot:spring-boot-starter-web:2.6.7' // Validation - implementation 'org.springframework.boot:spring-boot-starter-validation:2.6.4' + implementation 'org.springframework.boot:spring-boot-starter-validation:2.6.7' // Retry policy - implementation 'org.springframework.retry:spring-retry:1.3.2' + implementation 'org.springframework.retry:spring-retry:1.3.3' // Swagger - implementation 'org.springdoc:springdoc-openapi-ui:1.6.6' + implementation 'org.springdoc:springdoc-openapi-ui:1.6.7' // Serialisation - implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.2' + implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.2.2' // Log4J logging - implementation 'org.springframework.boot:spring-boot-starter-log4j2:2.6.4' + implementation 'org.springframework.boot:spring-boot-starter-log4j2:2.6.7' // EventStoreDB client - implementation 'com.eventstore:db-client-java:2.0.0' + implementation 'com.eventstore:db-client-java:3.0.0' // Postgres and JPA for read models - implementation 'org.springframework.boot:spring-boot-starter-data-jpa:2.6.4' - implementation 'org.postgresql:postgresql:42.3.3' - implementation 'junit:junit:4.13.1' + implementation 'org.springframework.boot:spring-boot-starter-data-jpa:2.6.7' + implementation 'org.postgresql:postgresql:42.3.4' + implementation 'junit:junit:4.13.2' // Test frameworks testImplementation 'org.springframework.boot:spring-boot-starter-test' @@ -42,7 +42,7 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.2' testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.8.2' testImplementation 'org.junit.platform:junit-platform-launcher:1.8.2' - testImplementation 'com.fasterxml.jackson.core:jackson-databind:2.13.2' + testImplementation 'com.fasterxml.jackson.core:jackson-databind:2.13.2.2' } configurations { diff --git a/samples/event-sourcing-esdb-simple/README.md b/samples/event-sourcing-esdb-simple/README.md index 9223e399..70692cbe 100644 --- a/samples/event-sourcing-esdb-simple/README.md +++ b/samples/event-sourcing-esdb-simple/README.md @@ -12,6 +12,12 @@ The presented use case is Shopping Cart flow: Technically it's modelled as Web API written in [Spring Boot](https://spring.io/projects/spring-boot) and [Java 17](https://www.oracle.com/java/technologies/downloads/). +## Watch the video + +Practical introduction to Event Sourcing with Spring Boot and EventStoreDB + +Practical introduction to Event Sourcing with Spring Boot and EventStoreDB + ## Main assumptions - explain basics of Event Sourcing, both from the write model ([EventStoreDB](https://developers.eventstore.com/)) and read model part ([PostgreSQL](https://www.postgresql.org/) and [Spring Data JPA](https://spring.io/projects/spring-data-jpa)), - present that you can join classical approach with Event Sourcing without making a massive revolution, diff --git a/samples/event-sourcing-esdb-simple/build.gradle b/samples/event-sourcing-esdb-simple/build.gradle index 8f441fda..eb366910 100644 --- a/samples/event-sourcing-esdb-simple/build.gradle +++ b/samples/event-sourcing-esdb-simple/build.gradle @@ -14,27 +14,27 @@ repositories { dependencies { // Spring Boot Web - implementation 'org.springframework.boot:spring-boot-starter-websocket:2.6.4' + implementation 'org.springframework.boot:spring-boot-starter-web:2.6.7' // Validation - implementation 'org.springframework.boot:spring-boot-starter-validation:2.6.4' + implementation 'org.springframework.boot:spring-boot-starter-validation:2.6.7' // Retry policy - implementation 'org.springframework.retry:spring-retry:1.3.2' + implementation 'org.springframework.retry:spring-retry:1.3.3' // Swagger - implementation 'org.springdoc:springdoc-openapi-ui:1.6.6' + implementation 'org.springdoc:springdoc-openapi-ui:1.6.7' // Serialisation - implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.2' + implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.2.2' // Log4J logging - implementation 'org.springframework.boot:spring-boot-starter-log4j2:2.6.4' + implementation 'org.springframework.boot:spring-boot-starter-log4j2:2.6.7' // EventStoreDB client implementation 'com.eventstore:db-client-java:2.0.0' // Postgres and JPA for read models - implementation 'org.springframework.boot:spring-boot-starter-data-jpa:2.6.4' - implementation 'org.postgresql:postgresql:42.3.3' - implementation 'junit:junit:4.13.1' + implementation 'org.springframework.boot:spring-boot-starter-data-jpa:2.6.7' + implementation 'org.postgresql:postgresql:42.3.4' + implementation 'junit:junit:4.13.2' // Test frameworks testImplementation 'org.springframework.boot:spring-boot-starter-test' @@ -42,7 +42,7 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.2' testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.8.2' testImplementation 'org.junit.platform:junit-platform-launcher:1.8.2' - testImplementation 'com.fasterxml.jackson.core:jackson-databind:2.13.2' + testImplementation 'com.fasterxml.jackson.core:jackson-databind:2.13.2.2' } configurations {