본문 바로가기

스프링

[spring] xml매핑_jaxb 사용법_1

1.     Com.springsource.javax.activation : Spring java-mail

2.     Com.springsource.javax.mail : Spring java-mail

3.     Com.springsource.org.aopalliance : Spring ProxyFactoryBean

4.     Com.springsource.org.aspectj.tools : AspectJExpressionPointcut 포인트컷 표현식 지원

5.     Com.springsource.junit : junit

6.     Commons-logging : Spring-context가 사용

7.     Mail : java-mail

8.     Mockito : 목 프레임워크 중 Mockito

9.     Mysql-connector : Mysql JDBC

10.   Org.springframework.context.support : Spring java-mail

11.   Spring-aop : 스프링 기능 자체의 aop, Spring ProxyFactoryBean

12.   Spring-bean : 스프링 빈을 활용하는 경우 필요. 스프링의 XML 설정파일과 자바 애노테이션을 파싱 하는데 필요한 클래스 포함

13.   Spring-context : 스프링 코어를 확장한 많은 클래스가 들어 있는데 모든 클래스는 EJB, JNDI(Java Naming Directory Interface), JMX용 클래스와 연동하는데 applicationcontext기능을 사용해야 하며 스프링 리모팅 클래스, 동적 스크립팅 언어(제이루비, 그루비등)와 연동하는 클래스, 빈 유효성검증(JSR-303) API, 스케줄링을 하는 클래스도 포함되어 있다.

14.   Spring-core : 모든 스프링 모듈에서 필요한 모듈. 다른 스프링 모듈에서 사용하는 공통 클래스가 포함됨.

15.   Spring-expression : 스프링 표현언어(SpEL) 지원 클래스 포함.

16.   Spring-jdbc : 스프링이 지원하는 jdbc.

17.   Spring-test.jar

-       @RunWith : Junit 프레임워크의 테스트 실행방법을 확장시 사용.

-       SpringJUnit4ClassRunner : 어플리케이션컨텍스트를 만들고 관리하는 확장 클래스

-       @ContextConfiguration(경로) : 자동으로 만들어줄 어플리케이션 컨텍스트 설정파일

18.   Spring-tx : DuplicateKeyException.class 파일 존재 및 스프링 트랜잭션

 

 

JAXB(Java Architecture for XML Binding)

JDK1.6부터 지원. XML문서정보를 동일한 구조의 오브젝트로 직접 매핑해줌.

기존 DOM 방식은 리플렉션 API를 사용해 간접적으로 접근하는 불편한 방식.

JAXBXML의 정보를 그대로 담고 있는 오브젝트 트리 구조로 만들어주기 때문에 XML 정보를 오브젝트처럼 다룰 수 있어 편리하다.

JAXBXML문서의 구조를 정의한 스키마를 이용해서 매핑할 오브젝트의 클래스까지 자동으로 만들어주는 컴파일러도 제공해준다.

스키마 컴파일러를 통해 자동생성된 오브젝트에는 매핑정보가 애노테이션으로 담겨 있다. JAXB API는 애노테이션에 담긴 정보를 이용해서 XML과 매핑된 오브젝트 트리 사이의 자동변환 작업을 수행해준다.

위와 같이 XML을 생성해서 오브젝트로 매핑 작업을 할 것임.

 

2. xmlns : 네임스페이스 명시. 접두사가 없으므로 해당 엘리먼트와 하위 엘리먼트의 네임스페이스가 됨.

3. targetNamespace : 스키마를 재사용하기 위해 사용됨(XML에서 targetNamespace 호출 schemaLocation)

4. elementFormDefault(qualified) : 요소 또는 속성이 네임스페이스 URI와 결합.

7. complexType : 이 스키마를 참조하는 XML에서 자식 엘리먼트, 혹은 속성 및 sequence, choice, all 속성 사용시 사용해야함.

8. sequence : 하위 엘리먼트가 올 순서를 나열(하위 엘리먼트가 여러 개 일시 유용)

아래처럼 변환할 것이다.

9. maxOccurs : 엘리먼트의 숫자를 min/max 값을 지정할 수 있지만, unbounded 지정시 횟수 제한 없이 무제한 하위 엘리먼트가 생길 수 있음

16. simpleContent : 단순타입(Integer,String )을 변형시켜 복합 타입으로 변환하기 위해 사용.

18. extension : 타입을 상속하여 새로운 타입으로 정의

 

 

 

 

JAVA_HOME\bin\xjc -p spring.user.sqlservice.jaxb sqlmap.xsd -d src

C:\shin\project\tobi\jdk1.7.0_80_x64\bin\xjc -p spring.user.sqlservice.jaxb sqlmap.xsd -d src

 

1.     SqlType.java, Sqlmap.java : <sqlmap><sql>에 대한 바인딩 클래스

2.     위처럼 바인딩용 자바 클래스와 팩토리 클래스가 생성됨

 

 

 

컴파일러가 만들어준  XML 문서 바인딩용 클래스.

14. XmlAccessType.FIED : 필드를 XML로 추출

15. XmlType : namespace 지정가능, 출력순서 지정가능, name 속성에는 XML스키마를 통해 java파일을 생성한 경우 작성한 name값이 들어감

24. rootElementsqlmap

26. XmlElement 프로퍼티 대상 14번라인에서 필드를 추출하기로 했으므로 필드에 선언

26~27. <sql> 태그의 정보를 담은 Sqltype 오브젝트를 리스트로 가지고 있다.

28. 언마샬러를 통해 XML을 객체로 변환하여 받기위한 getter

 

 

@XmlAttribute : XML속성을 지정

 

 

 

언마샬링(unmarshalling) : XML문서를 읽어서 자바의 오브젝트로 변환하는 것

마샬링(marshalling) : 바인딩 오브젝트를 XML 문서로 변환하는 것

2. epril.com : Jaxb 컴파일러를 사용한여 만든 오브젝트를 사용하기 위한 네임스페이스

4. ../sqlmap.xsd : xsd 지정

 

 

 

Jaxb 컴파일러를 사용하지 않는다면 네임스페이스는 필요없다.