Andrey Zahariev Stoev's Posts

Onion Architecture With Spring Boot (1/2)

December 31, 2020

The hexagonal-like architectures are helping to increase the longevity of software, effectively eliminating the coupling between the coded business knowledge and the technology. In a couple of posts I will share with you mimacom's way of tackling Onion Architecture with Spring Boot. In this first part I will give you more insights about it through a github-hosted example showing a simple implementation of ShoppingList's API's.

Read more

Testing Pessimistic Locking Handling with Spring Boot and JPA

September 25, 2020

Testing pessimistic locking handling in JPA is tricky because of the lack of JPA support of LockTimeout by different RDBMS providers. Yet leaving a critical part of the code untested is against the software craftsmanship's principles. In this blog post, I will show you through the medium of 3 GitHub projects how you could test it within Spring Boot Application against Oracle, MySQL and PostgreSQL.

Read more

Handling Pessimistic Locking with JPA on Oracle, MySQL, PostgreSQL, Apache Derby and H2

July 24, 2020

One of the key properties for correct pessimistic locking handling and testing is LockTimeout. Unfortunately its JPA support by different RDBMS providers is far from complete. In this article I will show you how you may overcome this limitation on Oracle, MySQL, PostgreSQL, Apache Derby and H2. Moreover, I will give you some suggestions about when pessimistic locking might be the correct solution and when not.

Read more

Testing Optimistic Locking Handling with Spring Boot and JPA

June 9, 2020

While optimistic locking handling in JPA is relatively well-known, it is usually poorly tested or not tested at all. In this blog post I will show you firstly what does optimistic locking handling mean and how you could implement it within a Spring Boot Application and JPA. After that you could see a way to write integration tests, which I hope could surprise you with their simplicity and efficiency!

Read more