Marshal & Unmarshal
unmarshal : XML -> 자바 객체
marshal : 자바 객체 -> XML
이것을 하는것이 JAXBf라는 JAVA API
❗️주의할 점❗️
thread-safe JAXBContext의 경우는 1회 생성 후 재사용을 권자.
생성 비용이 적지 않기 떄문에 마샬/언마샬을 수행될 때마다 매번 생성하는 것보다 한 번 생성하고 재사용하는 편이 좋음
다만, marshaller & unmarshaller의 경우 스레드 안전하지 않기 때문에 마샬/언마샬이 수행될 때마다 다시 생성하는 것을 권장.
다행히 비용은 크지않음
Marshaller
public interface Marshaller {
public void marshal( Object jaxbElement, javax.xml.transform.Result result )
throws JAXBException;
}
XML로 변환할 자바 객체와 결과갑을 담을 Result 타입의 객체를 넘겨주면 XML 결과를 Result 타입의 result 변수에 반환
UnMarshaller
public interface Unmarshaller {
public Object unmarshal( javax.xml.transform.Source source )
throws JAXBException;
}
Source 타입의 오브젝트를 주면, 설정에서 지정한 OXM 기술을 이용해 자바 객체 트리로 변환하고, 루트 객체를 반환
++ Spring OXM
OXM - XML 과 자바 객체를 매핑해서 상호 변환해주는 기술
JAXB가 비록 JavaSE, JavaEE의 표준이긴 하지만 다양한 OXM 기술이 존재
Castor XMLK, JiBX, XmlBeans, Xstream - XML 바인딩 기술 (JAXB도 마찬가지)