JaxbXmlSqlReader의 개선점
⇒ OML (Object-XML Mapping) : XML과 자바오브젝트를 매핑해서 상호 변환해주는 기술
기능이 같은 여러 가지 기술이 존재함 = 서비스 추상화를 통해 구현 기술에 대해 독립적인 코드를 작성할 수 있게 해야함
물론 스프링은 트랜잭션, 메일 전송, OXM에 대해서도 서비스 추상화 기능을 제공
Marshaller : 자바오브젝트를 XML로 변환
Unmarshaller : XML을 자바오브젝트로 변환
XML 파일에 대한 정보를 담은 Source 타입의 오브젝트를 주면, 설정에서 지정한 OXM 기술을 이용해 자바오브젝트 트리로 변환하고, 루트 오브젝트를 돌려줌
// Unmarshaller 인터페이스
// spring-oxm 모듈 안에 정의되어 있음
package org.springframework.oxm;
import javax.xml.transform.Source;
public interface Unmarshaller {
// 해당 클래스로 언마샬이 가능한지 확인해줌
// 별로 사용할 일은 없음
boolean supports(Class<?> clazz);
// 매핑 실패 시 추상화된 예외를 던짐
// 서브클래스에 좀 더 세분화되어 있음
// source를 통해 제공받은 XML을 자바오브젝트 트리로 변환해서
// 그 루트 오브젝트를 돌려줌
Object unmarshal(Source source) throws IOException, XmlMappingException;
}