본문 바로가기
Spring

[Spring 공식문서] Spring Boot. Data

by 매트(Mat) 2024. 6. 10.

SQL Databases

스프링 프레임워크는 JdbcClient 또는 JdbcTemplate을 사용한 직접 JDBC 접근부터 Hibernate와 같은 객체 관계형 매핑 기술 완성에 이르기까지 SQL 데이터베이스 작업에 대한 확장 가능한 지원을 제공한다. Spring Data는 이러한 작업들까지 모두 추상화하여 기능을 제공한다. Repository 구현체를 생성하여 규칙을 사용하여 메서드 이름에서 쿼리를 생성하는 것이다.

Configure a DataSource

자바의 javax.sql.DataSource 인터페이스는 데이터베이스 연결을 위한 표준 메서드를 제공한다. DataSource 는 URL과 사용자 인증을 통해 데이터베이스 연결을 설정한다.

Embedded Database Support

개발 단계에서 인메모리 DB를 사용하는 것이 편리하다. 또한 인메모리 DB는 영속된 스토리지를 제공하지 않기 때문에 애플리케이션 실행시 초기화된다. (말그대로 메모리 영역을 사용하는 것이다.)

Spring Boot는 내장된 H2, HSQL, Derby DB를 자동 설정한다. 따라서 DataSource 를 통한 URLs 연결을 따로 설정하지 않아도 되며, 단지 어떤 임베디드 DB를 사용할건지 의존성에 포함시키기만 하면 된다. 이것이 Spring Boot의 장점이다.

개발이 아닌 운영 DB 연결 역시 DataSource 인터페이스를 통해 자동 설정이 가능하다. (보통 application.properties 에 설정한다.)

spring.datasource.url=jdbc:mysql://localhost/test
spring.datasource.username=dbuser
spring.datasource.password=dbpass
  • 여기서 Spring Boot의 또 한가지 장점은 대부분의 DB URLs만 가지고도 JDBC driver class를 추론할 수 있다.

Supported Connection Pools

Spring Boot는 부트는 다양한 커넥션 풀을 제공하는데 우선순위는 다음과 같다.

  1. HikariCP
  2. Tomcat pooling DataSource
  3. Commons DBCP2
  • spring-boot-starter-jdbcspring-boot-starter-data-jpa 의존성을 받으면 기본적으로 HikariCP를 사용하게 된다.

JPA and Spring Data JPA

Java Persistence API는 객체를 관계형 데이터베이스에 매핑할 수 있는 표준 기술이다. spring-boot-starter-data-jpa starter 의존성을 받으면 Spring Boot가 필요한 다양한 의존성들을 추가적으로 자동설정한다. (Auto-Configuration)

  • Hibernate: JPA 구현체중 하나
  • Spring Data JPA: JPA 기반의 repositories를 구현하는데 도움이 된다.
  • Spring ORM: 스프링 프레임워크에서 Core ORM을 지원한다.

Spring Data JDBC나 Spring Data JPA, H2 등 상세 설명은 생략한다.
보면 핵심적인 부분은 Spring Framework가 DB를 연결하고 기능들을 사용할 수 있게 추상화했다는 것이고, Spring Boot는 그러한 기능을 사용할 수 있도록 Auto-Configuration을 통해 추가적으로 설정을 건드리니 않아도 되니 편리하다.

Working with NoSQL Technologies

Spring Data는 추가적으로 다양한 NoSQL 기술 접근법을 제공한다.

  • Cassandra
  • Couchbase
  • Elasticsearch
  • GemFire or Geode
  • LDAP
  • MongoDB
  • Neo4J
  • Redis

Spring Boot는 위 기술들을 위한 auto-configuration을 제공한다.

Redis

Redis는 캐시, 메시지 브로커 및 다양한 기능을 갖춘 key-value 저장소이다. Spring Boot는 Lettuce 및 Jedis 클라이언트 라이브러리에 대한 기본적인 auto-configuration과 그것들을 추상화하는 Spring Data Redis를 제공한다. (Spring Data JPA 의 추상화 개념과 비슷하다.)

MongoDB

MongoDB는 전통적인 테이블 기반인 관계형 데이터 대신 JSON과 유사한 스키마를 사용하는 오픈소스인 NoSQL document 데이터베이스이다. Spring Boot를 사용하면 spring-boot-starter-data-mongodb 와 같은 MongoDB를 편리하게 사용할 수 있는 기능들을 제공한다.

위에서 언급한 다양한 NoSQL 기술 접근법에 대해 자세히 공부하고 싶으면 스프링 공식문서를 참고하길 바란다.

댓글