본문 바로가기

스프링

[spring] xml_springOxm_내장형데이터베이스_hsqldb_6

1.     Com.springsource.javax.activation : Spring java-mail

2.     Com.springsource.javax.mail : Spring java-mail

3.     Com.springsource.org.aopalliance : Spring ProxyFactoryBean

4.     Com.springsource.org.aspectj.tools : AspectJExpressionPointcut 포인트컷 표현식 지원

5.     Com.springsource.org.castor : OXM castor Framework

6.     Com.springsource.org.hsqldb : spring 내장형 DataBase

7.     Com.springsource.junit : junit

8.     Commons-logging : Spring-context가 사용

9.     Mail : java-mail

10.   Mockito : 목 프레임워크 중 Mockito

11.   Mysql-connector : Mysql JDBC

12.   Org.springframework.context.support : Spring java-mail

13.   Org.springframework.oxm : Spring OXM(Object XML Mapping) Jaxb .

14.   Spring-aop : 스프링 기능 자체의 aop, Spring ProxyFactoryBean

15.   Spring-bean : 스프링 코어와 함께 의존성 주입 제공 (Core Container)

16.   Spring-context : 스프링 코어, BeanFactory를 확장한 어플리케이션 컨텍스트 구현, 리소스 로드 및 국제화 지원(Core Container)

17.   Spring-core : 다른 스프링 모듈이 사용하는 유틸리티(Core Container)

18.   Spring-expression : EL 확장 Bean속성(배열, 컬렉션 포함).(Core Container)

19.   Spring-jdbc : 스프링이 지원하는 jdbc.

20.   Spring-test.jar

-       @RunWith : Junit 프레임워크의 테스트 실행방법을 확장시 사용.

-       SpringJUnit4ClassRunner : 어플리케이션컨텍스트를 만들고 관리하는 확장 클래스

-       @ContextConfiguration(경로) : 자동으로 만들어줄 어플리케이션 컨텍스트 설정파일

21.   Spring-tx : DuplicateKeyException.class 파일 존재 및 스프링 트랜잭션

 

 

서비스 중 SQL 자체를 수정한다고 했을 때 동기화 지원하는 ConcurrentHashMap의 한계를 위해 인덱스를 이용한 최적화된 검색을 지원하는 SQL 레지스트리 내장형 DB을 만들 것이다.

* 내장형 DB

- DAO가 사용할 SQL을 저장해두고 관리할 목적으로 별도의 DB를 구성하면 배보다 배꼽이 더 큰 일이 될 수 있다. 그래서 이런 경우라면, DB의 장점과 특징은 그대로 갖고 있으면서도 애플리케이션 외부에 별도로 설치하고 셋업하는 번거로움은 없는 내장형 DB를 사용하는 것이 적당하다.

- 애플리케이션과 함께 시작되고 종료되는 DB를 말함. 데이터는 메모리에 저장되기 때문에 IO로 인해 발생하는 부하가 적어서 성능이 뛰어나다.

- 동시에 Map과 같은 컬렉션이나 오브젝트를 이용해 메모리에 데이터를 저장해두는 방법에 비해 매우 효과적이고 안정적인 방법으로 등록, 수정, 검색이 가능하고 최적화된 락킹, 격리수준, 트랜잭션을 적용할 수 도 있다.

* 메모리로 읽어들인 데이터(Map, List)를 여러가지 조건으로 검색하거나 통계를 내야한다고 생각해보자. 루프와 if 문이 난무하는 코드가 탄생할 것이다. 하지만 내장된 DB를 이용하면 이런 작업을 매우 편리하고 깔끔하게 사용될 수 있다.

 

* 자바에서 많이 사용되는 내장형 데이터베이스는 Derby, HSQL, H2를 꼽을 수 있다.

> JDBC 방식의 접근이라고 해서 기존의 DataSourceDAO를 사용하는 모델을 그대로 사용하는 건 좋은 방법이 아니다. 애플리케이션 내에서 DB를 가동시키고 초기화 SQL 스크립트 등을 실행시키는 등 초기화 작업이 별도로 필요하기 때문. 스프링은 내장형 DB를 손쉽게 이용할 수 있도록 내장형 DB 지원 기능을 제공한다.

* 내장형 DB는 애플리케이션을 통해 DB가 시작될 때마다 매번 테이블을 새롭게 생성한다. 따라서 위와같이 테이블 생성 SQL 스크립트를 준비해둬야 한다.

* KEYSQL 모두 일반적으로 DB에서 키워드로 사용되기 때문에 그대로 필드이름으로 사용할 수 없으므로 뒤에 _ 추가.

 

16. JdbcTemplate : 어짜피 DB를 액세스할 때는 JDBCDataSource를 이용하면 되므로 내장형 DB를 위한 서비스 추상화처럼 별도의 레이어와 인터페이스를 제공하지 않는다. 스프링이 제공하는 JdbcTemplate면 충분하기 때문.

* 스프링의 내장형 DB 빌더에는 DB 사용시 필요한 URL과 드라이버 등을 초기화해주는 기능이 있다.