1. DataSource
DataSource 는 실제 물리적인 database 들과의 연결을 위한 팩토리이다. DriverManager 클래스의 대체제로 username, password 과 URL 을 사용하여 database 와 연결합니다.
DataSource 를 통해서 Connection 객체와 connection pooling, distributed transactions 등의 기능을 사용할 수 있습니다.
- Configuring a DataSource
DataSource 를 사용하기 위해서 먼저 build.gradle 파일의 의존성에 jdbc 라이브러리를 추가한다. 만약 maven 을 사용한다면 pom.xml 의 dependency 에 추가하면 된다.
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
해당 dependency 는 spring boot 에서 제공하는 jdbc 연동 라이브러리이다. 자바에서는 database 연동을 위해 javax.sql.DataSource 인터페이스를 제공하는데 이 라이브러리에서 DataSource 관리를 위한 구현체로 tomcat-jdbc 를 default 로 제공해준다.
Datasource 를 위한 의존성을 추가해준 후에는 application.properties 를 통해 실제 연결할 datasource 의 url 과 계정정보 등의 설정을 해주어야 한다.
## spring datasource configuration
spring.datasource.url=#####
spring.datasource.driver-class-name=######
spring.datasource.username=######
위와 같이 application.properties 에서 spring datasource 에 대한 설정을 할 수 있는데, 이들은 실제 database 연결을 위한 설정이기 때문에 아래에서 실제 h2 database 를 연동하면서 자세하게 설명한다.
2. setup h2 database
실제 database 와 연결하여 spring boot 에서 datasource 를 연결하는 방법에 대해서 자세하게 보려고한다.
- build.gradle 설정
Spring boot application 과 연결하는 database 로는 h2 database 를 사용하려고 한다. 이를 사용하기 위해서 h2 database 와 연동되는 라이브러리 의존성을 추가한다.
runtimeOnly 'com.h2database:h2' // 실행시에만 필요한 라이브러리이기 때문에 runtimeOnly 로 지정
build.gradle 의 dependency 에 위와 같이 의존성을 추가한다. runtimeOnly 로 설정하는 이유는 해당 라이브러리가 실행 시에만 필요하기 때문이다.
- application.properties
위의 datasource 설명에서 말했던 spring 의 datasource 등과 h2 database 에 대한 설정을 해준다.
## spring datasource configuration (datasource url, datasource driver, datasource account info - username)
# spring.datasource.url=jdbc:h2:tcp://localhost/~/test
spring.datasource.url=jdbc:h2:mem:testdb # memory database 를 사용한다.
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
## h2 db configuration (console access enabled, console url path)
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
Spring datasource 설정에서는 database 의 url 과 사용할 driver 의 이름, 그리고 계정의 사용자 이름 등을 설정한다. Url 에서 mem 으로 지정하면 실제 database storage 가 아닌 memeory database 에 데이터를 저장한다.
아래에는 h2 database 에 대한 설정이다. H2 database 의 console 페이지 사용에 대한 설정인데, spring.h2.console.enabled 를 true 로 설정하는 경우 console 페이지를 사용할 수 있다. 그리고 spring.h2.console.path 는 해당 페이지를 출력할 url path 에 해당한다.
3. database init script for spring
Spring 에서는 resources 디렉토리에 schema.sql 과 data.sql 가 존재하면 서버 시작 시에 이들을 실행한다. 이를 통해서 database 의 초기화를 수행할 수 있다.
Schema.sql 은 보통 테이블 스키마 생성을 위한 DDL 명령어들로 작성된 스크립트이고 data.sql 은 테이블에 들어가는 초기 데이터들을 다루는 DML 명령어들로 작성된다.
[Reference]
'Tech > Spring | SpringBoot' 카테고리의 다른 글
[SpringBoot] Database 연동 - 3 (JdbcTemplate) (1) | 2022.09.21 |
---|---|
[SpringBoot] Database 연동 - 2 (JDBC) (0) | 2022.09.17 |
[Spring] Spring MVC (0) | 2022.09.05 |
[Spring] @Controller vs @RestController (0) | 2022.08.30 |
[Spring] Swagger 3.0.0 적용 (0) | 2022.07.01 |