Mit Spring Data Couchbase kann eine Java-Applikation sehr einfach auf die Dokumente des Couchbase Servers zugreifen.
Das im Folgenden erläuterte Beispiel ist unter https://github.com/Javacream/org.javacream.training.couchbase
zu finden.
Das POM
Couchbase wird von der Spring Boot Community unterstützt und durch einen eigenen Starter realisiert:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-couchbase</artifactId>
</dependency>
Java-Document-Mapping
Die Struktur einer Java-Klasse wird über Couchbase-Annotationen in ein Dokument gemapped. Die folgende Klasse entspricht einer Airline
aus dem travel-demo
der Couchbase-Installation:
package org.javacream.training.couchbase.spring.data.travel; import org.springframework.data.couchbase.core.mapping.Document; import com.couchbase.client.java.repository.annotation.Field; import com.couchbase.client.java.repository.annotation.Id; @Document public class Airline { @Id private String id; @Field private String type; @Field private String name; @Field("iata") private String iataCode; @Field private String icao; @Field private String callsign; @Field private String country; //getter und setter }
Das Repository
Das Repository wird wie bei Spring Data üblich als Interface realisiert:
package org.javacream.training.couchbase.spring.data.travel; import java.util.List; import org.springframework.data.couchbase.core.query.N1qlPrimaryIndexed; import org.springframework.data.couchbase.core.query.View; import org.springframework.data.couchbase.core.query.ViewIndexed; import org.springframework.data.repository.CrudRepository; /** * Repository interface to manage {@link Airline} instances. * */ @N1qlPrimaryIndexed @ViewIndexed(designDoc = "airlines") public interface TravelRepository extends CrudRepository<Airline, String> { /** * Derived query selecting by {@code iataCode}. * * @param code * @return */ Airline findAirlineByIataCode(String code); /** * Query method using {@code airlines/all} view. * * @return */ @View(designDocument = "airlines", viewName = "allAirlines") List<Airline> findAllAirlinesBy(); }
Die Anwendung
Die Spring Boot-Applikation wird über die application.properties
konfiguriert:
spring.couchbase.bucket.name=travel-sample
spring.couchbase.bootstrap-hosts=localhost
spring.couchbase.username=*****
spring.couchbase.password=*****
Die Anwendung benutzt dann das Repository, um mit der Couchbase zu kommunizieren.