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는 부트는 다양한 커넥션 풀을 제공하는데 우선순위는 다음과 같다.
- HikariCP
- Tomcat pooling DataSource
- Commons DBCP2
spring-boot-starter-jdbc
나spring-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 기술 접근법에 대해 자세히 공부하고 싶으면 스프링 공식문서를 참고하길 바란다.
'Spring' 카테고리의 다른 글
[Spring 공식문서] Spring Boot. Web (0) | 2024.05.16 |
---|---|
[Spring 공식문서] Spring Boot. Core Features (0) | 2024.05.16 |
[Spring 공식문서] Spring Boot. Using Spring Boot (0) | 2024.05.14 |
HttpEntity, @RequestBody, @ResponseBody의 기능 (HTTP 메시지 컨버터) (0) | 2022.07.21 |
@RequestParam과 @ModelAttribute 기능 (0) | 2022.07.21 |
댓글