JavaTM Platform
Standard Ed. 6

javax.xml.bind.annotation
주석형 XmlIDREF



@Retention (value =RUNTIME )
@Target (value ={FIELD ,METHOD })
public @interface XmlIDREF

JavaBean 프로퍼티을 XML IDREF 에 맵 합니다.

XML 의 직렬화 및 직렬화 복원을 또 있고다 객체 그래프의 참조 무결성을 유지하기 위해(때문에), 참조 또는 포함 관계에 근거해 적절히 객체 참조를 정렬화할 필요가 있습니다. @XmlID 주석과 @XmlIDREF 주석을 맞추어 사용하는 것으로써, 포함 관계 또는 참조에 의한 JavaBean 프로퍼티의 형태의 매핑을 커스터마이즈 할 수 있게 됩니다.

사용법

@XmlIDREF 주석은, 다음의 프로그램 요소로 사용할 수 있습니다.

추가의 일반적인 정보에 대해서는, javax.xml.bind.package javadoc 의 「패키지의 스펙」을 참조해 주세요.

사용에는 다음의 제약이 있습니다.

예 1: JavaBean 프로퍼티을 xs:IDREF 에 맵 합니다 (즉, 포함 관계는 아니고 참조에 근거한다).


   //EXAMPLE:Code fragment
   public class Shipping {
       @XmlIDREF public Customer getCustomer();
       public void setCustomer(Customer customer);
       ....
    }

   <! -- Example:XML Schema fragment -->
   <xs:complexType name="Shipping">
     <xs:complexContent>
       <xs:sequence>
         <xs:element name="customer" type="xs:IDREF"/>
         ....
       </xs:sequence>
     </xs:complexContent>
   </xs:complexType>

 

례 2: 차에, 포함 관계와 참조를 대비한 포괄적인 예를 나타냅니다.

    // By default, Customer maps to complex type xs:Customer
    public class Customer {
        
        // map JavaBean property type to xs:ID
        @XmlID public String getCustomerID();
        public void setCustomerID(String id);

        // .... other properties not shown 
    }


   // By default, Invoice maps to a complex type xs:Invoice 
   public class Invoice {
    
       // map by reference
       @XmlIDREF public Customer getCustomer();
       public void setCustomer(Customer customer);

      // .... other properties not shown here
   }

   // By default, Shipping maps to complex type xs:Shipping
   public class Shipping {

       // map by reference
       @XmlIDREF public Customer getCustomer();
       public void setCustomer(Customer customer);
   }

   // at least one class must reference Customer by containment;
   // Customer instances won't be marshalled.
   @XmlElement(name="CustomerData")
   public class CustomerData {
       // map reference to Customer by containment by default.
       public Customer getCustomer();

       // maps reference to Shipping by containment by default.  
       public Shipping getShipping();     

       // maps reference to Invoice by containment by default.  
       public Invoice getInvoice();     
   }

   <! -- XML Schema mapping for above code frament -->

   <xs:complexType name="Invoice">
     <xs:complexContent>
       <xs:sequence>
         <xs:element name="customer" type="xs:IDREF"/>
         ....
       </xs:sequence>
     </xs:complexContent>
   </xs:complexType>

   <xs:complexType name="Shipping">
     <xs:complexContent>
       <xs:sequence>
         <xs:element name="customer" type="xs:IDREF"/>
         ....
       </xs:sequence>
     </xs:complexContent>
   </xs:complexType>

   <xs:complexType name="Customer">
     <xs:complexContent>
       <xs:sequence>
         ....
       </xs:sequence>
       <xs:attribute name="CustomerID" type="xs:ID"/>
     </xs:complexContent>
   </xs:complexType>

   <xs:complexType name="CustomerData">
     <xs:complexContent>
       <xs:sequence>
         <xs:element name="customer" type="xs:Customer"/>
         <xs:element name="shipping" type="xs:Shipping"/>
         <xs:element name="invoice"  type="xs:Invoice"/>
       </xs:sequence>
     </xs:complexContent>
   </xs:complexType>

   <xs:element name"customerData" type="xs:CustomerData"/>

   <! -- Instance document conforming to the above XML Schema -->
    <customerData>
       <customer customerID="Alice">
           ....
       </customer>

       <shipping customer="Alice">
           ....
       </shipping>
         
       <invoice customer="Alice">
           ....
       </invoice>
   </customerData>

 

예 3: 리스트를 IDREF 형의 반복 요소에 맵 합니다.

     //Code fragment
     public class Shipping {
         @XmlIDREF
         @XmlElement(name="Alice")
             public List customers;
     }

     <! -- XML schema fragment -->
     <xs:complexType name="Shipping">
       <xs:sequence>
         <xs:choice minOccurs="0" maxOccurs="unbounded">
           <xs:element name="Alice" type="xs:IDREF"/>
         </xs:choice>
       </xs:sequence>
     </xs:complexType>
 

예 4: 리스트를 IDREF 형의 요소 리스트에 맵 합니다.

     //Code fragment
     public class Shipping {
         @XmlIDREF
         @XmlElements(
             @XmlElement(name="Alice", type="Customer.class")
              @XmlElement(name="John", type="InternationalCustomer.class")
         public List customers;
     }

     <! -- XML Schema fragment -->
     <xs:complexType name="Shipping">
       <xs:sequence>
         <xs:choice minOccurs="0" maxOccurs="unbounded">
           <xs:element name="Alice" type="xs:IDREF"/>
           <xs:element name="John" type="xs:IDREF"/>
         </xs:choice>
       </xs:sequence>
     </xs:complexType>
 

도입된 버젼:
JAXB2. 0
관련 항목:
XmlID


JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.