H2

개요

H2는 자바 기반의 DB 엔진으로서 스프링프레임워크 3 부터는 H2, HSQL 등의 내장 데이터베이스의 사용을 지원하고 있다.

해당 데이터베이스들은 오라클 같은 비교적 무거운 데이터베이스에 비해 상대적으로 가벼우며, 내장으로 사용 할 경우 개발자가 로컬에서 자체적으로 돌릴 수도 있다

설명

설정

스프링프레임워크3에서는 spring-jdbc 네임 스페이스에서 제공하는 jdbc:embedded-database를 이용하여 간단한 설정을 지원한다.

 
<beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd">
 
    <jdbc:embedded-database id="dataSource" type="HSQL"/>
 
    </beans>

스프링 컨테이너는 javax.sql.DataSource 타입의 빈으로 내장 데이터베이스의 인스턴스를 생성하여 인젝션 시킬 수 있도록 지원한다. 스프링에서는 HSQL, H2 및 Derby를 지원하며 타입을 명시적으로 지정하지 않는 경우 기본값은 HSQL 이다. 추가로 jdbc:embedded-database 태그를 사용하면 빈 데이터베이스만을 생성하는 것이 아니라 스키마를 만들고 여기에 데이터까지 넣어줄 수 있다.

<jdbc:embedded-database id="dataSource">
    <jdbc:script location="classpath:schema.sql" execution="INIT"/>
    <jdbc:script location="classpath:data.sql" execution="INIT"/>
</jdbc:embedded-database>

위와같이 설정 된 H2 데이터베이스의 데이터 소스는 dataSource 라는 id를 가진 빈으로 등록되며, 해당 빈은 DI를 통하여 또 다른 설정파일 또는 컨트롤러 등에서 사용할 수 있다

프로그래밍 방식을 통한 인스턴스 생성

스프링 에서는 xml 설정 뿐만이 아니라 EmbeddedDatabaseBuilder API에서 제공하는 함수를 사용하여 H2의 인스턴스를 생성 시킬 수 있다.

database = new EmbeddedDatabaseBuilder().addDefaultScripts().build();

참고자료

 
egovframework/rte3/psl/h2.txt · 마지막 수정: 2023/12/21 05:21 (외부 편집기)
 
이 위키의 내용은 다음의 라이센스에 따릅니다 :CC Attribution-Noncommercial-Share Alike 3.0 Unported
전자정부 표준프레임워크 라이센스(바로가기)

전자정부 표준프레임워크 활용의 안정성 보장을 위해 위험성을 지속적으로 모니터링하고 있으나, 오픈소스의 특성상 문제가 발생할 수 있습니다.
전자정부 표준프레임워크는 Apache 2.0 라이선스를 따르고 있는 오픈소스 프로그램입니다. Apache 2.0 라이선스에 따라 표준프레임워크를 활용하여 발생된 업무중단, 컴퓨터 고장 또는 오동작으로 인한 손해 등에 대해서 책임이 없습니다.
Recent changes RSS feed CC Attribution-Noncommercial-Share Alike 3.0 Unported Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki