29. NoSQL 기술 사용 by sh
Spring Data는 MongoDB, Neo4J, Elasticsearch, Solr, Redis, Gemfire, Couchbase 및 Cassandra를 포함한 다양한 NoSQL 기술에 액세스하는 데 도움이되는 추가 프로젝트를 제공합니다. Spring Boot는 Redis, MongoDB, Elasticsearch, Solr 및 Gemfire에 대한 자동 구성을 제공합니다. 다른 프로젝트를 사용할 수는 있지만 직접 구성해야합니다. projects.spring.io/spring-data에서 해당 참조 문서를 참조하십시오.
29.1 Redis
Redis는 캐시, 메시지 브로커 및 풍부한 기능의 키 - 값 저장소입니다. Spring Boot는 Jedis 클라이언트 라이브러리의 기본 자동 구성과 Spring Data Redis가 제공하는 추상화를 제공합니다. 의존성을 편리한 방식으로 수집하기위한 spring-boot-starter-redis
'starter POM'이 있습니다.
29.1.1 Redis 연결
다른 Spring Bean처럼 자동 구성된 RedisConnectionFactory
, StringRedisTemplate
또는 vanilla RedisTemplate
인스턴스를 삽입 할 수 있습니다. 기본적으로 인스턴스는 localhost:6379
를 사용하여 Redis 서버에 연결을 시도합니다 :
@Component
public class MyBean {
private StringRedisTemplate template;
@Autowired
public MyBean(StringRedisTemplate template) {
this.template = template;
}
// ...
}
자동으로 구성된 유형 중 @Bean
을 추가하면 기본값을 대체합니다 (RedisTemplate
의 경우 예외는 해당 유형이 아닌 'redisTemplate'bean 이름을 기반으로합니다). commons-pool2
가 클래스 경로에 있으면 기본적으로 풀링 된 연결 팩토리가 생성됩니다.
29.2 MongoDB
MongoDB는 전통적인 테이블 기반 관계형 데이터 대신 JSON 형 스키마를 사용하는 오픈 소스 NoSQL 문서 데이터베이스입니다. Spring Boot는 spring-boot-starter-data-mongodb
'Starter POM'을 포함하여 MongoDB와 함께 작업 할 때 몇 가지 편의를 제공합니다.
29.2.1 MongoDB 데이터베이스 연결
자동화 된 org.springframework.data.mongodb.MongoDbFactory
를 삽입하여 Mongo 데이터베이스에 액세스 할 수 있습니다. 기본적으로 인스턴스는 mongodb://localhost/test
URL을 사용하여 MongoDB 서버에 연결을 시도합니다.
import org.springframework.data.mongodb.MongoDbFactory;
import com.mongodb.DB;
@Component
public class MyBean {
private final MongoDbFactory mongo;
@Autowired
public MyBean(MongoDbFactory mongo) {
this.mongo = mongo;
}
// ...
public void example() {
DB db = mongo.getDb();
// ...
}
}
spring.data.mongodb.uri
속성을 설정하여 url
을 변경하거나 호스트 / 포트를 지정할 수 있습니다. 예를 들어, application.properties
에 다음을 선언 할 수 있습니다.
spring.data.mongodb.host=mongoserver
spring.data.mongodb.port=27017
spring.data.mongodb.port가 지정되지 않은 경우 기본값 27017이 사용됩니다. 위의 샘플에서 이 줄을 삭제하면됩니다.
Spring Data Mongo를 사용하지 않는다면 MongoDbFactory를 사용하는 대신 com.mongodb.Mongo beans를 주입 할 수 있습니다.
또한 MongoDB 연결 설정을 완벽하게 제어하려면 자신의 MongoDbFactory 또는 Mongo bean을 선언 할 수 있습니다.
29.2.2 MongoTemplate
Spring Data Mongo는 MongoTemplate
클래스를 제공한다.이 클래스는 Spring JdbcTemplate과 디자인 면에서 매우 유사하다. JdbcTemplate
와 마찬가지로 Spring Boot는 간단하게 삽입 할 수 있도록 bean을 자동으로 구성합니다.
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Component;
@Component
public class MyBean {
private final MongoTemplate mongoTemplate;
@Autowired
public MyBean(MongoTemplate mongoTemplate) {
this.mongoTemplate = mongoTemplate;
}
// ...
}
자세한 내용은 MongoOperations Javadoc을 참조하십시오.
29.2.3 Spring Data MongoDB 리포지토리들
Spring Data는 MongoDB에 대한 저장소 지원을 포함합니다. 앞에서 설명한 JPA 저장소와 마찬가지로 기본적으로 메소드 이름을 기반으로 쿼리가 자동으로 생성됩니다.
실제로 Spring Data JPA와 Spring Data MongoDB는 동일한 공통 인프라를 공유합니다. 따라서 이전에 JPA 예제를 사용할 수 있었고 City가 JPA @Entity가 아닌 Mongo 데이터 클래스라고 가정하면 같은 방식으로 작동합니다.
package com.example.myapp.domain;
import org.springframework.data.domain.*;
import org.springframework.data.repository.*;
public interface CityRepository extends Repository<City, Long> {
Page<City> findAll(Pageable pageable);
City findByNameAndCountryAllIgnoringCase(String name, String country);
}
풍부한 객체 매핑 기술을 포함하여 Spring 데이터 MongoDB에 대한 자세한 내용은 reference documentation를 참조하십시오.
29.3 Gemfire
Spring Data Gemfire는 Pivotal Gemfire 데이터 관리 플랫폼에 액세스하기위한 편리한 Spring 친화적 도구를 제공합니다. 의존성을 편리한 방식으로 수집하기위한 spring-boot-starter-data-gemfire 'starter POM'이 있습니다. 현재 Gemfire에 대한 auto = config 지원은 없지만 하나의 주석으로 Spring Data Repository를 활성화 할 수 있습니다.
29.4 Solr
Apache Solr는 검색 엔진입니다. Spring Boot는 solr 클라이언트 라이브러리의 기본 자동 구성과 Spring Data Solr가 제공하는 추상화를 제공합니다. 의존성을 편리한 방식으로 수집하기 위한 spring-boot-starter-data-solr 'Starter POM'이 있습니다.
29.4.1 Solr 연결
다른 Spring Bean과 마찬가지로 자동 구성된 SolrServer 인스턴스를 삽입 할 수 있습니다. 기본적으로 인스턴스는 localhost:8983/solr을 사용하여 서버에 연결을 시도합니다.
@Component
public class MyBean {
private SolrServer solr;
@Autowired
public MyBean(SolrServer solr) {
this.solr = solr;
}
// ...
}
SolrServer 유형의 @Bean을 추가하면 기본값으로 바뀝니다.
29.4.2 Spring Data Solr 리포지토리들
Spring 데이터에는 Apache Solr에 대한 저장소 지원이 포함됩니다. 앞에서 설명한 JPA 저장소와 마찬가지로 기본적으로 메소드 이름을 기반으로 쿼리가 자동으로 생성됩니다.
사실, Spring Data JPA와 Spring Data Solr은 동일한 공통 인프라를 공유합니다. 따라서 JPA 예제를 이전 버전에서 가져 와서 City가 JPA @Entity가 아닌 @SolrDocument 클래스라고 가정하면 같은 방식으로 작동합니다.
Spring Data Solr에 대한 자세한 내용은 reference documentation를 참조하십시오.
29.5 Elasticsearch
Elastic Search는 오픈 소스, 분산, 실시간 검색 및 분석 엔진입니다. Spring Boot는 Spring Data Elasticsearch에서 제공하는 Elasticsearch의 기본 자동 구성과 추상화를 제공합니다. 의존성을 편리한 방식으로 수집하기위한 spring-boot-starter-data-elasticsearch 'Starter POM'이 있습니다.
29.5.1 Elasticsearch 연결
다른 Spring Bean처럼 자동 구성된 ElasticsearchTemplate 또는 Elasticsearch Client 인스턴스를 삽입 할 수 있습니다. 기본적으로 인스턴스는 로컬 인 메모리 서버 (Elasticsearch 용어로 NodeClient)에 연결을 시도하지만 spring.data.elasticsearch.clusterNodes를 쉼표로 구분하여 '호스트 : 포트'목록을 설정하여 원격 서버 (예 : TransportClient)로 전환 할 수 있습니다.
@Component
public class MyBean {
private ElasticsearchTemplate template;
@Autowired
public MyBean(ElasticsearchTemplate template) {
this.template = template;
}
// ...
}
lasticsearchTemplate 유형의 @Bean을 추가하면 기본값을 대체합니다.
29.5.2 Spring Data Elasticsearch 리포지토리들
Spring 데이터는 Elasticsearch에 대한 저장소 지원을 포함합니다. 앞에서 설명한 JPA 저장소와 마찬가지로 기본적으로 메소드 이름을 기반으로 쿼리가 자동으로 생성됩니다.
실제로 Spring Data JPA와 Spring Data Elasticsearch는 동일한 공통 인프라를 공유합니다. 따라서 이전에 JPA 예제를 사용할 수 있었고 City가 JPA @Entity가 아닌 Elasticsearch @Document 클래스라고 가정하면 같은 방식으로 작동합니다.
Spring Data Elasticsearch에 대한 자세한 내용은 reference documentation를 참조하십시오.
Last updated
Was this helpful?