2009-04-30 4 views
7

Java에서 주석의 목적에 대해 아직 명확하지 않습니다. 처음에는 나는 그들이 단지 문서로 사용되었다고 생각했다. 그러나이 설명서를 Google App Engine Datastore에서 보면, 나는 그렇게 확신하지 못합니다. @PersistenceCapable (identityType = IdentityType.APPLICATION)은 메소드 서명과 비슷하게 보입니다.이 Java 주석은 어떤 기능을합니까?

이 주석 유형의 목적은 무엇입니까? 그것은 무엇을합니까?

import java.util.Date; 
import javax.jdo.annotations.IdGeneratorStrategy; 
import javax.jdo.annotations.IdentityType; 
import javax.jdo.annotations.PersistenceCapable; 
import javax.jdo.annotations.Persistent; 
import javax.jdo.annotations.PrimaryKey; 

@PersistenceCapable(identityType = IdentityType.APPLICATION) 
public class Employee { 
    @PrimaryKey 
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
    private Long id; 

    @Persistent 
    private String firstName; 

    @Persistent 
    private String lastName; 

    @Persistent 
    private Date hireDate; 

    public Employee(String firstName, String lastName, Date hireDate) { 
     this.firstName = firstName; 
     this.lastName = lastName; 
     this.hireDate = hireDate; 
    } 

    // Accessors for the fields. JDO doesn't use these, but your application does. 

    public Long getId() { 
     return id; 
    } 

    public String getFirstName() { 
     return firstName; 
    } 

    // ... other accessors... 
} 

답변

9

소스 레벨 메타 데이터입니다. 그것들은 코드가 아닌 코드에 정보를 추가하는 방법이며, 이는 쉽게 기계 처리됩니다.

이 예제에서는 해당 엔티티 유형에 대한 객체 관계형 매핑을 구성하는 데 사용됩니다. 예를 들어 id 필드가 해당 객체의 기본 키 여야하며 firstName, lastName 및 hireDate가 데이터베이스에 저장되어야한다고 말합니다. (일부 일시적인 객체 상태와는 다른 필드를 말합니다.)

JDO에 대한 GAE 지원은 데이터베이스에 저장하려고 시도 할 객체를 알아야합니다. @PersistenceCapable 주석이 달린 클래스를 찾고 코드의 클래스를 살펴봄으로써이를 수행합니다.

일반적으로 이전에 외부 구성 파일을 사용할 위치를 바꾸는 데 사용됩니다. Java 표준 라이브러리에는 코드의 주석을 읽는 도구가있어 구성 파일 배관을 롤링하는 것보다 프로세스를 훨씬 쉽게 처리 할 수 ​​있으며 IDE 지원을 무료로 얻을 수 있습니다.

+1

이 클래스는 모델을 정의하는 간단한 방법입니다. 예전에는 Struts에서 텍스트 표기법을 사용하여 모델을 구성하는 구성 파일을 만들었을 것입니다. 하지만 여기에서는 주석을 사용하여 동일한 작업을 수행하고 있습니다. 또한 주석의 작동 방식은 사용중인 라이브러리와 해당 라이브러리가 주석을 어떻게 정의했는지에 따라 달라집니다. 따라서 @Persistent는 JDO 라이브러리에서 하나의 것을 의미하지만 다른 라이브러리에서는 또 다른 것을 의미 할 수 있습니다. – Bijou

+0

예. 예를 들어 Hibernate에서 .hbm.xml 파일을 사용하여이 구성을 수행하거나 JPA 주석을 사용할 수 있습니다. 라이브러리에서 다른 주석으로 지정된 주석을 사용하는 것은 일반적입니다. 이 예에서 JDO는 여러 라이브러리가 지원/구현하는 Java 사양입니다. JDO 주석을 읽는 것은 Google App Engine 데이터 저장소입니다. 그들은 서로 다른 의미를 가지지는 않는 경우가 일반적입니다. 물론 전적으로 가능하며, 메타 데이터 (주석)를 프로그래밍 방식 (일부 메소드 호출)보다 쉽게 ​​수행 할 수 있습니다. – millimoose

0

이것들은 Java Data Objects API에서 온 것 같습니다. 이것은 EJB3가 수행해야하는 것과 어느 정도 겹치는 API입니다. 같은 개념, 구문 및 도구가 다릅니다. 당신은 일반적으로 주석에 익숙하지 않은 경우, Java tutorial.

관련 문제