# Spring Data Couchbase 3.0 - Reactive examples This project contains samples of reactive data access features with Spring Data (Couchbase). ## Reactive Template API usage with `RxJavaCouchbaseOperations` The main reactive Template API class is `RxJavaCouchbaseTemplate`, ideally used through its interface `RxJavaCouchbaseOperations`. It defines a basic set of reactive data access operations using [RxJava 1](https://github.com/ReactiveX/RxJava/tree/1.x) `Single` and `Observable` reactive types. ```java Airline airline = new Airline(); Observable single = operations.save(airline) Observable airlines = operations.findByView(ViewQuery.from("airlines", "all"), Airline.class); ``` The test cases in `RxJavaCouchbaseOperationsIntegrationTests` show basic Template API usage. Reactive data access reads and converts individual elements while processing the stream. ## Reactive Repository support Spring Data Couchbase provides reactive repository support with Project Reactor, RxJava 1 and RxJava 2 reactive types. The reactive API supports reactive type conversion between reactive types. ```java @N1qlPrimaryIndexed @ViewIndexed(designDoc = "airlines") public interface ReactiveAirlineRepository extends ReactiveCrudRepository { Mono findAirlineByIataCode(String code); @View(designDocument = "airlines", viewName = "all") Flux findAllBy(); } ``` ```java @N1qlPrimaryIndexed @ViewIndexed(designDoc = "airlines") public interface RxJava1AirlineRepository extends Repository { Single findAirlineByIataCode(String code); @View(designDocument = "airlines", viewName = "all") Observable findAllBy(); Single findById(String id); Single save(Airline airline); } ```