Java >> Java tutoriál >  >> Tag >> Spring

Příklad Spring Data Couchbase

V tomto příkladu si ukážeme, jak můžeme propojit Spring Data s Couchbase.

1. Co je CouchBase?

Couchbase je vysoce škálovatelná databáze NoSQL založená na dokumentech. Dokumentové databáze NoSQL pracují na konceptu KEY-VALUE podobnému map páry. Klíč je jedinečně identifikovatelná vlastnost, jako je řetězec, cesta atd., a hodnota je dokument, který má být uložen. Dalším příkladem NoSQL založeného na dokumentech je MongoDB. V jednom z našich předchozích příkladů jsme již ukázali, jak můžeme propojit a spravovat Spring Data s MongoDB.

Spring Data CouchBase je modul Spring, který nám pomáhá při integraci s databázovým serverem CouchBase. Stejně jako ostatní moduly uvedené v této sérii i tento modul poskytuje podporu pro odvozené dotazy (na základě názvů metod) a anotovaný dotaz.

2. Nastavení projektu

Začněme tedy nastavení projektu instalací databázového serveru CouchBase odtud. Pro tento příklad jsme použili Community Edition.

Po úspěšné instalaci bude uživatel přesměrován na tuto stránku:http://localhost:8091/index.html

Stránka vypadá takto:

Obr. 1:Úspěšné nastavení Couchbase

Dalším krokem je vytvoření nového Data-Bucket . Data-Bucket je jako analogie Table v RDBMS nebo na Collection v MongoDb Databáze. To lze provést kliknutím na Create New Data Bucket tlačítko na Data Buckets tab. Pojmenujeme to JavaCodeGeeks v zájmu tohoto příkladu. Do tohoto datového bloku přidáme naše dokumenty.

Nyní, když je server CouchBase spuštěn a běží, nastavíme prostředí aplikace.
Vytvořte jednoduchý Maven Project v Eclipse IDE výběrem Skip Archetype Selection zaškrtávací políčko z vyskakovacího okna projektu New Maven. Používáme níže uvedený pom.xml ke správě závislostí pro CouchBase ze Spring Data.

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.jcg.examples.springDataCouchbaseExample</groupId>
	<artifactId>SpringDataCouchbaseExample</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<dependencies>
		<dependency>
			<groupId>org.springframework.data</groupId>
			<artifactId>spring-data-couchbase</artifactId>
			<version>2.0.0.RELEASE</version>
		</dependency>

	</dependencies>

</project>

Eclipse stáhne požadované soubory JAR a přidá závislosti do cesty třídy projektu. Nyní, když je projekt nastaven a importovány závislosti, můžeme začít psát skutečný kód.

3. Implementace

Implementace se bude skládat ze tří hlavních konfiguračních souborů. První z nich je skutečný doménový objekt, který bude zachován v databázi CouchBase jako Document .

Book.java

package com.jcg.examples.entity;

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(expiry=0)
public class Book
{

		@Id
		private long bookId;
		
		@Field
		private String name;
		
		@Field
		private long isbnNumber;

		public long getBookId()
		{
				return bookId;
		}

		public void setBookId(long bookId)
		{
				this.bookId = bookId;
		}

		public String getName()
		{
				return name;
		}

		public void setName(String name)
		{
				this.name = name;
		}

		public long getIsbnNumber()
		{
				return isbnNumber;
		}

		public void setIsbnNumber(long isbnNumber)
		{
				this.isbnNumber = isbnNumber;
		}

		@Override
		public String toString()
		{
				return "Book [bookId=" + bookId + ", name=" + name + ", isbnNumber=" + isbnNumber + "]";
		}
		
}

@Document anotace se používá k označení PoJo jako Couchbase Document . Má expiry atribut, což je TTL dokumentu.

@Id označí odpovídající proměnnou instance jako ID dokumentu v databázi. Na základě tohoto ID dokument načteme později.

Následuje základní třída úložiště:

BookRepo.java

package com.jcg.examples.repo;

import org.springframework.data.couchbase.repository.CouchbaseRepository;
import org.springframework.stereotype.Repository;

import com.jcg.examples.entity.Book;

@Repository
public interface BookRepo extends CouchbaseRepository<Book, Long>
{
}

Úložiště se jednoduše rozšiřuje z org.springframework.data.couchbase.repository.CouchbaseRepository rozhraní a implementaci zajišťuje kontejner Spring za běhu. Musíme poskytnout prohlášení o správných generikách podle Entity, což je v našem případě . Spring Data Module nám poskytuje řadu vestavěných metod pro manipulaci s daty. Nemusíme psát dotazy pro základní manipulaci s daty a čtení.

Pro provádění vlastních písemných dotazů může vývojář vytvořit svou vlastní metodu zadáním dotazu pomocí org.springframework.data.couchbase.core.query.Query anotace.

Poslední a nejdůležitější je XML konfiguraci založenou na inicializaci zdroje dat Couchbase, abychom mohli komunikovat a provádět naše dotazy na serveru.

spring-couchbase-integration.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns:beans="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:couchbase="http://www.springframework.org/schema/data/couchbase"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
    http://www.springframework.org/schema/data/couchbase
    http://www.springframework.org/schema/data/couchbase/spring-couchbase.xsd">

    <couchbase:cluster>
      <couchbase:node>127.0.0.1</couchbase:node>
    </couchbase:cluster>

    <couchbase:clusterInfo  login="Administrator" password="Administrator"/>
	
	<beans:bean id="couchbaseEnv" class="com.couchbase.client.java.env.DefaultCouchbaseEnvironment" factory-method="create"/>
	<beans:bean id="myCustomTranslationService" class="org.springframework.data.couchbase.core.convert.translation.JacksonTranslationService"/>
	
	<couchbase:indexManager/>
	
	<couchbase:repositories base-package="com.jcg.examples.repo" />
	
	 <couchbase:template translation-service-ref="myCustomTranslationService"/>

    

    <couchbase:bucket bucketName="JavaCodeGeeks" bucketPassword="password.1"/>
</beans:beans>

To je z hlediska nastavení vše. Nyní, když je vše nastaveno, spusťte aplikaci a otestujte kód! Zde je ApplicationTest třída, která načte XML soubor pro vytvoření instance Spring Containeru a provedení několika dotazů.

ApplicationTest.java

package com.jcg.examples;

import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;

import com.jcg.examples.entity.Book;
import com.jcg.examples.repo.BookRepo;

public class ApplicationTest
{

		
		public static void main(String[] args)
		{
				ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new ClassPathResource("spring-couchbase-integration.xml").getPath());
				BookRepo bookRepo = context.getBean(BookRepo.class);
				
				Book book = new Book();
				book.setBookId(123);;
				book.setIsbnNumber(2133443554);
				book.setName("Kane And Abel by XYZ");
				bookRepo.save(book);
				
				Book anotherBook = new Book();
				anotherBook.setBookId(456);;
				anotherBook.setIsbnNumber(2133443554);
				anotherBook.setName("The Prodigal Daughter");
				bookRepo.save(anotherBook);
				
				Book retreivedBook = bookRepo.findOne(123l);
				
				System.out.println(retreivedBook);
				
				bookRepo.delete(456l);
				
				context.close();
		}

}

Vytvořili jsme dva Book objekty a uchovaly je jako dokumenty v databázi. Poté se je pokusíme získat podle jejich ID a jednoho z nich smazat předáním jejich ID.

Zde je ukázkový výstup programu:

INFO: Connected to Node 127.0.0.1
Feb 28, 2016 12:41:27 AM com.couchbase.client.core.config.DefaultConfigurationProvider$8 call
INFO: Opened bucket JavaCodeGeeks
Book [bookId=123, name=Kane And Abel by XYZ, isbnNumber=2133443554]

V konzole uživatelského rozhraní může uživatel vidět uložené dokumenty na kartě Data-Buckets>Documents. Tady je to, jak to vypadá:

Obr. 2:Příklad uložení CouchBase

A podrobné zobrazení dokumentu:

Obr. 3:Podrobnosti uloženého dokumentu

4. Stáhněte si zdrojový kód

Zde jsme ukázali, jak nakonfigurovat a spravovat databázový server Couchbase pomocí Spring Data.couchbase

Java Tag