Wrapping a synchronous CrudRepository

Sometimes we may already have a CrudRepository instance with all the required mechanics for data access (no manual queries or entity mappings needed). However, we cannot directly use this in a reactive application. In this case, it is easy to write our own reactive adapter that would behave similarly to the rxjava2-jdbc library but at the repository level. Be cautious with JPA when applying this approach. We can quickly run into proxy issues when using lazy loading. So, let's assume that we have the following Book entity defined by JPA:

@Entity
@Table(name = "book")
public class Book {
   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private Integer id;
   private String title;
   private Integer publishingYear ...

Get Hands-On Reactive Programming in Spring 5 now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.