programing

JAXB란 무엇이며 왜 사용해야 합니까?

sourcetip 2022. 10. 2. 23:24
반응형

JAXB란 무엇이며 왜 사용해야 합니까?

여기 JAXB가 빵 조각 이후 최고라고 말하는 남자가 있다.Stack Overflow 사용자가 JAXB의 사용 사례에 대해 어떻게 생각하는지, 그리고 JAXB가 좋은 솔루션인지 나쁜 솔루션인지 궁금합니다.

저는 XML 조작에 대한 JAXB의 열렬한 팬입니다.기본적으로 XML, Java 데이터 구조 및 XML 스키마에 정통하다고 가정합니다.

XML을 사용하는 것은 어렵습니다.XML 파일(기본적으로 텍스트 파일)을 가져와 이를 일종의 데이터 구조로 변환하는 방법이 필요합니다. 그러면 프로그램이 이를 조작할 수 있습니다.

JAXB는 사용자가 작성한 XML 스키마를 사용하여 해당 스키마에 대응하는 클래스 세트를 만듭니다.JAXB 유틸리티는 XML을 조작하기 위한 데이터 구조의 계층을 만듭니다.

그런 다음 JAXB를 사용하여 XML 파일을 읽고 생성된 클래스의 인스턴스를 만들 수 있습니다. XML에서 데이터를 로드합니다.JAXB는 반대로 Java 클래스를 사용하여 대응하는 XML을 생성합니다.

JAXB는 사용하기 쉽고 Java 1.6 (1.5를 사용하고 있다면 JAXB .jars를 다운로드 할 수 있습니다)가 있기 때문에 마음에 듭니다.클래스 계층을 만드는 방법은 직관적이며, 제 경험상으로는 "XML"을 추상화하여 "데이터"에 집중할 수 있습니다.

질문에 답하려면:작은 XML 파일의 경우 JAXB가 과잉일 수 있습니다.XML 스키마를 작성 및 관리하고 데이터 구조에 Java 클래스를 사용하는 "표준 교과서 방식"을 사용해야 합니다(메인 클래스, "노드"를 나타내는 작은 내부 클래스, 그리고 이들의 거대한 계층).따라서 JAXB는 애플리케이션의 "기본 설정"의 단순한 선형 목록에는 적합하지 않을 수 있습니다.

그러나 XML 스키마가 상당히 복잡하고 그 안에 데이터가 많이 포함되어 있다면 JAXB는 매우 유용합니다.프로젝트에서는 대량의 데이터를 바이너리(C 프로그램에서 소비)와 XML(인간이 데이터를 소비하고 수정할 수 있도록) 간에 변환했습니다.결과적으로 생성된 XML 스키마는 중요하지 않기 때문에(많은 계층의 수준, 일부 필드는 반복할 수 없고 다른 필드는 반복할 수 없음), JAXB는 이를 조작하는 데 도움이 되었습니다.

이 제품을 사용하지 않는 이유가 있습니다. 성능이 저하되기 때문입니다.마샬링과 언마샬링에는 많은 오버헤드가 있다.또한 XML-Object 바인딩을 위한 다른 API(예: JiBX: http://jibx.sourceforge.net/)도 고려할 수 있습니다.

회사에서 항상 JAXB를 쓰는데 너무 좋아요.항상 변경되는 복잡한 XML 스키마에 매우 적합합니다.특히 XML 파일 내의 태그에 랜덤하게 액세스 할 수 있습니다.

포주하는 건 싫지만 블로그를 시작한 지 얼마 안 됐는데 이게 말 그대로 내가 처음 올린 거야!

여기를 봐주세요.

http://arthur.gonigberg.com/2010/04/21/getting-started-with-jaxb/

「ORM for XML」입니다.대부분 WS Death Star 시스템용으로 JAX-WS와 함께 사용됩니다(실제로 Sun 실장은 함께 개발됩니다).

JAXB를 사용하면 객체의 XML 표현(마샬링)과 XML의 객체 표현(마샬링)을 자동으로 생성할 수 있습니다.

XML 스키마에 관한 한, 다음의 2개의 선택지가 있습니다.

  • XSD에서 Java 클래스 생성
  • Java 클래스에서 XSD 생성

XStream, Digester 또는 XMLBeans와 같은 간단한 XML 직렬화 라이브러리도 있습니다.

JAXB는 XML 스키마로 정의된 외부 XML 사양에 따라 코드화할 필요가 있는 경우에 적합합니다(xsd).

예를 들어, 거래 어플리케이션이 있고 Uber Lame Trade Reporting App에 거래를 보고해야 합니다. 그러면 거래 어플리케이션이 사용자에게 제공됩니다.ultra.xsd잘 지내야죠.를 사용합니다.$JAVA_HOME/bin/xjc컴파일러를 사용하여 XML을 여러 Java 클래스로 변환합니다(예:UltraTrade).

그런 다음 단순한 어댑터 레이어를 작성하여 거래 객체를 다음과 같이 변환할 수 있습니다.UltraTrades를 사용합니다.JAXB데이터를 Ultra-Corp에 집약합니다.거래를 XML 형식으로 변환하는 것보다 훨씬 쉽습니다.

Ultra-Corp가 실제로 자신의 사양에 따르지 않은 경우, 그리고 업계가 이 모든 것을 망칠 수 있습니다.price그들은 그것을 로서 가지고 있다.xsd:float실제로는 로 표현되어야 한다double!

왜 JAXB가 필요하죠?웹 서비스의 리모트컴포넌트(Java로 작성)는 XML을 사용하여 서로 메시지를 교환합니다.XML을 사용하는 이유는 XML이 제한된 리소스로 네트워크에서 메시지를 교환하기 위한 경량 옵션으로 간주되기 때문입니다.대부분의 경우 이러한 XML 문서를 개체로 변환하거나 개체로 변환해야 합니다.예: Simple Java POJO Employee를 사용하여 직원 데이터를 원격 컴포넌트(Java 프로그램)로 전송할 수 있습니다.

class Employee{
 String name;
 String dept;
 ....
}

이 Pojo는 다음과 같이 XML 문서로 변환(Marshall)해야 합니다.

<Employee>
  <Name>...</Name>
  <Department>...</Department>
</Employee>

리모트 컴포넌트에서 XML 문서에서 Java 오브젝트로 돌아갑니다(Un-Marshall).

JAXB가 뭐죠?

JAXB는 이러한 마샬링 및 언마샬링 작업을 수행하기 위한 라이브러리 또는 도구입니다.이 두통을 피할 수 있는 간단한 방법이죠.

JIBX도 확인하실 수 있습니다.또한 OTA(Open Travel Alliance) 전용 xml 데이터 바인더로 AX가 지원합니다.IS2 서버퍼포먼스와 호환성이 필요한 경우는, 다음의 URL 를 참조해 주세요.

http://jibx.sourceforge.net/index.html

JAXB는 기본 마샬링 최적화를 통해 향상된 성능을 제공합니다.JAXB는 Java 객체를 XML 문서에서 읽고 쓰기 위한 프로그래머 API를 정의하여 Java를 통한 XML 읽기 및 쓰기를 단순화합니다.

언급URL : https://stackoverflow.com/questions/607141/what-is-jaxb-and-why-would-i-use-it

반응형