스프링에서는 내장형 데이버베이스를 지원한다.
자바에서는 Derby, HSQL, H2가 대표적인 내장 데이터베이스이다.
내장형데이터베이스란? 인메모리 데이터베이스(In-memory Database)는 데이터 스토리지의 메인 메모리에 설치되어 운영되는 방식의 데이터베이스 관리 시스템 인메모리 데이터베이스는 디스크에 최적화된 데이터베이스보다 더 빠른데 그 까닭은 디스크 접근이 메모리 접근보다 느리기 때문이며, 이 데이터베이스는 내부 최적화 알고리즘이 더 단순하며 더 적은 CPU 명령을 실행한다. 메모리의 데이터에 접근하면 데이터를 조회할 때 검색 시간이 줄어들며 디스크보다 더 빠르고 더 예측 가능성 성능을 제공한다. |
위키백과를 보면 인메모리 데이터베이스의 특징은 아래와 같다.
장점: 메모리에 접근하기 때문에 속도가 빠르다
단점: 애플리케이션과 생명주기를 같이하기 때문에 휘발성이다.
토비에서는 내장형 데이터베이스 중 HSQL을 이용한 설정 예제를 보여준다.
<메소드내에서 설정하는 방식>
public class EmbeddedDbTest {
EmbeddedDatabase db;
JdbcTemplate template;
@BeforeEach
public void setUp(){
db = new EmbeddedDatabaseBuilder()
.setType(HSQL) //사용할 내장 데이터베이스
.addScript("classpath:/embeddeddb/schema.sql") //실행시 사용할 스크립트
.addScript("classpath:/embeddeddb/data.sql")
.build();
template = new JdbcTemplate(db);
}
@AfterEach
public void tearDown(){
db.shutdown(); //매 테스트가 종료될 때 데이터베이스를 종료한다.
}
....
테스트 코드를 통해 내장 데이터베이스를 JdbcTemplate에 설정하는 방식을 설명하고 있다.
<xml로 설정하는 방식>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
....
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
....
http://www.springframework.org/schema/jdbc
http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd">
<jdbc:embedded-database id="embeddedDatabase" type="HSQL">
<jdbc:script location="classpath:updatable/sqlRegistrySchema.sql"/>
</jdbc:embedded-database>
<jdbc:script> 태그는 위에 addScript와 같은 역할을 수행한다.
<jdbc:embedded-database>로 만들어진 내장형 데이터베이스는 컨테이너가 종료될 때 자동으로 shutdown() 메소드가 호출된다.
'개발서적 > 토비 스프링 3.1-Vol.1' 카테고리의 다른 글
[토비의 스프링 - Vol.1]7.6.2 빈 스캐닝과 자동와이어링 실습 중 에러 java.lang.IllegalStateException: Failed to load ApplicationContext (0) | 2021.06.11 |
---|---|
[토비의 스프링 - Vol.1]7.5.2 내장형 데이터베이스 (0) | 2021.05.29 |
[토비의 스프링 - Vol.1] 내가 몰랐던 용어 정리 (0) | 2021.05.15 |
[토비의 스프링 - Vol.1]7장 XML SQL 서비스 실습(리스트7-19) (0) | 2021.05.15 |
[토비의 스프링 - Vol.1]7.2.1 xml 파일 매핑 - JAXB 관련 실습 중 나온 현상 (0) | 2021.04.29 |