2007년 7월 24일 화요일

Binding VS Mapping

어제 스터디에서는 매우 흥미로운 주제에 사로잡혔습니다.
JAXB 2.0을 다루면서
Binding과 Mapping의 구분을 두는 개념이 책에 나왔기 때문입니다.
솔직히 저는, 바인딩과 매핑이 크게 다르지 않다고 생각했었는데,
책에서는 바인딩을 유도형, 매핑을 대응형으로 보고 있습니다.
유도형이란, 한쪽(자바 클래스 또는 XML 스키마)로부터 반대쪽이 유도되는 형태이고, 대응형은 이미 존재하는 양쪽을 이어주는 형태입니다.
따라서 바인딩은, From Java니 From XML이니 하는 프로그래밍 모델이 나올 수 있습니다. (JAX-WS와 매우 흡사하지요) 하지만 어느 한쪽은 이제 만들 대상이고, 이미 있는 것을 쓸 수는 없습니다.
하지만, 이 세상에는 기존의 리소스들이 엄청나게 많습니다. 매핑은 그런 데이터의 처리에 적합합니다.
재밌는 것은, 제가 2003년 방카슈랑스 프로젝트를 할 때, 바로 그 문제, 즉 매핑의 요구가 있었다는 사실입니다. 그리고 이 책으로 돌아와보면, 그때 만들었던 커스텀 매핑 방식이 매우 흡사하게 소개되고 있다는 것이 참 놀랍습니다.
아마도, 이런 문제는 (저자가 컨설팅을 업으로 하고 있다는 점에서) 자주 드러나나 봅니다. 사실, XML만의 관점으로 보면 XSLT로 다 되겠지만(실제 저도 방카슈랑스 할 때 XSLT를 도입할 뻔 했습니다), 현재 소프트웨어 실행 플랫폼이 자바와 같은 오브젝트 지향 프로그래밍 언어로 되어 있어서 변환이 늘 필요로 합니다. 그래서

XML 스키마 -> (JAXB로 바인딩된) 자바 클래스 -> 기존 자바 클래스

와 같은 방식으로 매핑을 해결한다는 것이죠.

다소 비효율적으로 보입니다만, 실제 썩 잘 돌아가는 얼개입니다. 더 자세한 이야기는 책의 본문을 기대해주세요.

댓글 없음: