카테고리 없음

[9] 데이터 관리 - 스프링 데이터

PSAwesome 2019. 7. 17. 12:00
반응형

스프링 데이터

정의 : 데이터베이스 모델의 특수성을 보존하면서도 데이터 스토어와 상호작용을 위한 포괄적인 추상화 제공하는 오픈소스 프로젝트

스프링 데이터 모듈을 지원하는 종류는?

대표적으로

JDBC, JPA, MongoDB, Neo4J, Redis, Elasticsearch, Solr, Gemfire, Cassandram Couchbase 등이 있다.

이후에 지나갈 개념들의 정의를 알아보자.

  • 도메인 클래스: 도메인 데이터의 모델을 함수로 표현한 기본 클래스
    도메인 클래스는 여러 개의 비공개 필드로 구성되며 getter, setter를 제공하기도 한다.
    예)
public class User {
	private Long id;
    private String firstName;
    private String lastName;
    private String email;
}

1. 클래스 이름은 도메인 모델의 개념(명사 또는 엔티티)을 표현.

2. 비공개 필드는 네이티브 데이터 스토어 안의 데이터 객체 속성과 매핑된다.

 

  • Repository: 스프링 데이터 애플리케이션에서 데이터 접근 시 사용된다. @Repository 같은 스테레오 타입 애너테이션을 적용해 리포지토리(repository)를 정의하는 방법을 지원해왔다. 또 이 애너테이션이 적용된 빈
    1. 저장 기술에 특화된 예외를 발생시킬 가능성이 있음을 스프링에 알리는 동시에
    2. 이 예외들은 스프링이 제공하는 계층 구조로 표준화되어 있음을 명확히 안다.
    - 1, 2번의 방식을 통해 제약 조건 위반과 같은 한 가지 예외 형식에만 집중할 수 있다.

    이미 JPA와 같은 엔티티를 사용하신 분이라면 기본적으로 보셨을 인터페이스의
    예)
public interface UserRepository extends CrudRepository<User, Long>{
}

 

  • 도메이 데이터를 위한 자바 패키지 구성: 마이크로서비스를 구현할 때 패키지 구성은 중요한 요소이다.
    각 서비스마다 패키지를 그룹화해서 생성, 관리한다.
    예)
    domain
      /address
        /*.java
      /catalog
        /*.java
      /invoice
      /order
      /payment
      /product

Repository 종류 스프링 데이터 프로젝트

목적

Repository 공통 스프링 데이터 리포지토리의 핵심 추상화 제공
CrudRepository 공통 Repository에 기본 CRUD 제어를 추가한 확장
PagingAndSortingRepository 공통 레코드의 페이징과 정렬 도구를 추가한 CrudRepository 확장
JpaRepository JPA PagingAndSortingRepository에 JPA와 RDBMS 데이터베이스 모델 지원 도구를 추가
MongoRepository 몽고디비 PagingAndSortingRepository에 몽고디비 도큐먼트 관리 도구를 추가
CouchbaseRepository 카우치베이스 CrudRepository에 카우치베이스 도큐먼트 관리 도구를 추가

 

반응형