dynamic sql이란 Client의 request에 따라 동적으로 변하는 sql이다.
기존 jdbc에서는 preparedstatement에 동적으로 변하는 부분에 ?를 작성하여 인스턴스를 생성 한뒤 set메서드로 파라미터를 입력했다.
mybatis는 다양한 파라미터 타입과 notation을 제공하여 편리하게 dynamic sql을 작성 가능하게 해주는 framework이다.
Q. script language, compile language
A. script 언어는 프로그램 안에 삽입되어 컴파일의 과정 없이 실시간으로 실행되어 런타임 과정에서만 에러를 찾을 수 있다.
컴파일 과정을 생략하기에 기계어로 변환된 byte code는 메모리에 적재되기에 무거운 작업시에는 비효율적이다.
반면 컴파일 언어는 컴파일 과정을 통해 byte code로 변환되어 실행된다. 컴파일 과정을 거치기에 미리 에러를 찾을 수 있다.
Q. ApplicationContext
A. Api를 찾아보면 ApplicationContext의 기능은 아래와 같다.
1. BeanFactory interface를 구현하여 interface기반의 재사용 확장가능한 application component를 인스턴스화 할 수 있다.
2. ResourceLoader interface를 구현하여 Application의 resources를 가져올 수 있다.
3. ApplicationEventPublisher interface를 구현하여 특정 이벤트에 대한 동작이 가능하다
--> Application context를 통해 bean, application resources에 접근 가능하다.
Q. PropertyPlaceholderConfigurer
A. java에서 속성들을 관리하기 위한 방법으로 key, value 형식인 properties 파일을 지원한다.
PropertyPlaceholderConfigurer는 spring에서 외부 properties 파일들을 parsing하기위해 지원하는 bean이다.
```
<bean class="org.springframwork.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>외부 properties 파일 경로</value>
</property>
</bean>
```
Q. ContextLoader
A. presentation layer의 controller들을 생성하기 전에 business layer에서 사용할 DAO, VO component들을 미리 생성해 주는 Class이다.
Servlet Container가 구동되면 Container는 ContextLoader를 pre loading한 뒤 Bean들의 정보가 담긴 metaData를 parsing하여 client의 request가 오기 전에
미리 Bean들을 생성해 놓는다.