1. SQL 중심 기술
- 애플리케이션에서 데이터베이스에 접근하기 위해 SQL 쿼리문을 애플리케이션 내부에 직접적으로 작성하는 것이 중심이 되는 기술이다
<select id="findMember" resultType="Member">
SELECT * FROM MEMBER WHERE member_id = #{memberId}
</select>
- mybatis와 Spring JDBC는 대표적인 SQL 중심 기술이다
- mybatis은 SQL Mapper라는 설정 파일이 있고 SQL Mapper에서 SQL 쿼리문을 직접적으로 작성한다
- 작성된 SQL 쿼리문을 기반으로 데이터베이스의 특정 테이블에서 데이터를 조회하여 Java 객체로 변환해 준다 - Spring JDBC의 경우에도 Java 코드에 SQL 쿼리문이 직접적으로 포함이 되어 있다
Member member = this.jdbcTemplate.queryForObject(
"select * from member where member_id=?", 1, Member.class);
2. Object 중심 기술
- 데이터를 SQL 쿼리문 중심으로 보는 것이 아니라 모든 데이터를 객체(Object) 관점으로 바라보는 기술이다
- 애플리케이션 내부에서 Java 객체(Object)를 SQL 쿼리문으로 자동 변환 후에 데이터베이스의 테이블에 접근한다
- 객체(Object) 중심의 데이터 액세스 기술을 ORM(Object-Relational Mapping)이라고 한다
- Java에는 대표적인 ORM 기술로 JPA(Java Persistence API)가 있다
3. Spring Data JDBC
- Spring Data JDBC를 사용하기 위하여 Spring Boot Starter를 추가한다
dependencies {
...
...
implementation 'org.springframework.boot:spring-boot-starter-data-jdbc'
runtimeOnly 'com.h2database:h2'
}
- 데이터베이스에서 데이터를 관리할 것이므로 개발 환경에서 손쉽게 사용할 수 있는 인메모리(In-memory) DB인 H2를 의존 라이브러리 설정에 추가한다
※ In-memory DB
- 메모리 안에 데이터를 저장하는 데이터베이스이다
- 애플리케이션이 실행되는 동안에만 데이터를 저장하고 있다
- 애플리케이션 실행을 중지했다가 다시 실행시키면 인메모리(In-memory) DB에 있던 데이터는 삭제된다
- 로컬 개발 환경에서는 테스트를 진행하기 위하여 인메모리(In-memory) DB를 주로 사용한다
※ H2 활성화 설정
- Spring Boot Initializr를 통해 샘플 프로젝트를 생성하면 기본적으로 ‘src/main/resources’ 디렉토리 하단에 application.properties 라는 비어 있는 파일이 있다
- application.properties 또는 application.yml 파일을 통해 Spring에서 사용하는 다양한 설정 정보들을 입력할 수 있다
- 웹 브라우저 H2 콘솔에서 H2 DB에 접속한 후, 데이터베이스를 관리할 수 있도록 설정한다
spring:
h2:
console:
enabled: true
- 프로젝트 실행 시 H2 console available at '/h2'. Database available at 'jdbc:h2:mem:test'와 같은 문구가 출력되면 정상적으로 연동되었음을 의미한다
- 애플리케이션 연결
- https://github.com/codestates-seb/be-reference-spring-data-jdbc 연결하여 fork 한 후 실행한다
- chrome 브라우져에 http://local8080/h2 입력 후 출력한다
- 원래는 http://local8080/h2-console 입력해야 하지만, 미리 URL을 추가 설정했으므로 h2까지만 입력한다
- 프로젝트 실행에서 출력된 로그에서 주소를 확인한 후 'jdbc:h2:mem:test'을 JDBC URL에 입력한다
- 정상적으로 H2 브라우저에 연결되면 아래와 같이 출력된다
- H2 DB는 애플리케이션을 재시작 할때 마다 애플리케이션 로그에 출력되는 JDBC URL이 매번 랜덤하게 변경된다
- application.yml 파일에 H2에 대한 추가 설정을 통해 JDBC URL을 다시 입력하는 불편을 해소한다
- 예제 Git 파일은 사전에 입력되어 있으므로 추가 변경이 필요하지 않다
spring:
h2:
console:
enabled: true
path: /h2
datasource:
url: jdbc:h2:mem:test
- Spring Boot에서는 appliation.properties 또는 application.yml 파일을 통해 설정 정보를 추가할 수 있다
※ 참조 링크
▶ 인메모리(In-memory) DB
: https://www.h2database.com/html/main.html
H2 Database Engine
H2 Database Engine Welcome to H2, the Java SQL database. The main features of H2 are: Very fast, open source, JDBC API Embedded and server modes; in-memory databases Browser based Console application Small footprint: around 2.5 MB jar file size Supp
www.h2database.com
인메모리 데이터베이스 - 위키백과, 우리 모두의 백과사전
ko.wikipedia.org
▶ H2 Console : http://www.h2database.com/html/quickstart.html
Quickstart
Quickstart Embedding H2 in an Application The H2 Console Application Embedding H2 in an Application This database can be used in embedded mode, or in server mode. To use it in embedded mode, you need to: Add the h2*.jar to the classpath (H2 does not have a
www.h2database.com
▶ Property 설정 : https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html
Common Application Properties
docs.spring.io
'Spring MVC' 카테고리의 다른 글
Spring MVC - 데이터 액서스 계층(Data Access Layer) - DDD (0) | 2022.07.03 |
---|---|
Spring MVC - 데이터 액서스 계층(Data Access Layer) - Spring Data JDBC(샘플 구현) (0) | 2022.07.03 |
Spring MVC - 데이터 액서스 계층(Data Access Layer) - JDBC (0) | 2022.07.03 |
Spring MVC - 예외 처리(Handling Exception) - @ExceptionHandler (0) | 2022.06.28 |
Spring MVC - 서비스 계층(Service Layer) (0) | 2022.06.27 |