2008-11-04 3 views
5

Java 클래스를 생성하는 데 필요한 XML 스키마가 있습니다. 그것은 특별히 큰 스키마는 아니며, 약 20 개의 클래스가 될 것이라고 말하고 싶습니다. 자동화 바인딩 프로그램 (JAXB 또는 JiBX에서 제공되는 것과 같은)을 사용할지 또는 수동으로 내 클래스를 작성하고 마샬링/언 마샬링을 위해 XStream과 같은 것을 사용할지를 결정하려고합니다.Java 바인딩 대 수동으로 클래스 정의

는 바인딩 프로그램을 사용하는 것이 아니라 자신의 클래스를 작성하는 장점/단점은 무엇이다. 또한

, 내가 바인딩 프로그램을 사용 하나, 나는 영원히에 묶여입니다. 예를 들어, JAXB의 바인딩 컴파일러를 사용하여 클래스를 작성하는 경우, 모든 마샬링/언 마샬링에 JAXB를 사용해야합니까?

p.s. 나는 유용했다 XML 바인딩/직렬화에 대한 다음과 같은 질문을 본 적이 있지만 완전히 내 질문에 대답하지 않았다 : xml-serialization-in-javajava-xml-binding

답변

13

나는 당신의 질문에 확실한 대답이 없다고 생각합니다. 그러나 나는 당신에게 어려운 조언을 줄 수있다. 여기에 몇 가지 고려해야 할 :

  1. 그것은 마샬링 및 unmarhsalling 코드, 특히 처음으로 작성하는 시간이 소요됩니다.

  2. 당신은 당신의 DOM 라이브러리 (Xerces에 또는 그와 동등한)의 뉘앙스를 배우는 꽤 많은 시간을 할애해야합니다. 당신은 결국 헬퍼 클래스를 쓰기로 구동됩니다 있도록

  3. 중복이 많이 있습니다.

  4. 당신은 선택 요소와 속성의 지역에 기지를 모두 포함했는지 확인하기 위해 단위 테스트를 많이해야합니다.

"JAXB가 나를 위해하는 일"이라고 말하면 꽤 쉽습니다. 몇 년 동안이 작업을 해본 결과, JAXB는 Java 5/6에서 JAXB의 최신 반복 작업과 같은 많은 시간과 노력을 절약 할 수 있다고 말합니다.

*** JAXB 프로를하게하지 마십시오 클래스는 응용 프로그램에 누수가 발생 : 당신은 JAXB와 함께 가면

는하지만 우리는 내가 함께 전달하고자하는 하드 방법을 배운 하나의 교훈이있다.

귀하의 질문에 말했듯이, 이것은 JAXB가하는 일과 전체 애플리케이션을 연결합니다. JAXB를 교체해야하는 경우 (향후에 그렇게 할 수있는 이유가 여러 가지가 있음) 도전적이고 고통스러운 작업에 직면하게 될 것입니다. (신뢰 해주십시오. 다시 위치).

이제 우리는 항상 JAXB 생성 클래스를 외관이나 팩토리 뒤에 숨기고 JAXB 클래스에서 필요한 동작을 가진 자체 도메인 POJO로 매핑합니다. 우리는 JDBC를 할 때 JAXB를 생각합니다. JAXB는 또 다른 데이터 소스이며, 우리 도메인 POJO와 데이터를주고받는 다른 방법입니다. 도메인 POJO는 비밀 소스이며 우리는 그들이 어떻게 코딩되고 어떻게 사용되는지를 통제합니다. JAXB는 마샬링 및 언 마샬링을위한 도구 일뿐입니다.

+0

"특히 마샬링 및 unmarhsalling 코드를 작성하는 데 시간이 오래 걸립니다." - 사실, 나는 결과를 추가 할 것입니다. "적어도 한 번 잘못 이해하게 될 것입니다." –

0

길고 끝없는 홀리 전쟁을 내 경험으로 시작하고 싶지 않습니다. 모든 코드를 생성하고 신뢰할 수있는 JAR을 필요로하지 않는 도구를 사용할 수 있다면 말이죠. 생성 될 코드는 추악 할 것입니다 만, 필기 코드를 수작업으로 만들 필요가있을 때까지 작동합니다.대부분의 경우 그렇게 할 필요가 없습니다. 죄송합니다. 사용 도구에 대한 즉각적인 추천을 드릴 수 없습니다.