これらのJavaアノテーションはどの機能を提供しますか?

StackOverflow https://stackoverflow.com/questions/808711

  •  03-07-2019
  •  | 
  •  

質問

Javaでの注釈の目的についてはまだ明確ではありません。当初、私はそれらが単にドキュメントとして役立つと思っていました。しかし、 Google App Engine Datastore のこのドキュメントを見ると、わからない。 @PersistenceCapable(identityType = IdentityType.APPLICATION)は、メソッドシグネチャに似ています。

このタイプの注釈の目的は何ですか?それは何をしますか?

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...
}
役に立ちましたか?

解決

これらはソースレベルのメタデータです。これらは、コードではなくコードに情報を追加する方法であり、簡単に機械処理されます。

例では、それらはそのエンティティタイプのオブジェクトリレーショナルマッピングを構成するために使用されます。たとえば、idフィールドはそのオブジェクトのプライマリキーである必要があり、firstName、lastName、およびhireDateはデータベースに格納される必要があるということです。 (これらのフィールドを一時的なオブジェクトの状態と区別するため。)

JDOのGAEサポートは、データベースに保存しようとするオブジェクトを知る必要があります。これを行うには、コード内のクラスを調べ、@ PersistenceCapableアノテーションが付けられたクラスを探します。

通常、これらは以前に外部構成ファイルを使用する場所を置き換えるために使用されます。 Java標準ライブラリには、コード内の注釈を読み取るためのツールがあります。これにより、独自の構成ファイルを配管するよりも処理がはるかに簡単になり、IDEサポートが無料で提供されます。

他のヒント

これらは Java Data Objects APIから来ていると思います。これは、EJB3が達成することになっているものとある程度重複するAPIです。同じ概念、異なる構文およびツール。

一般的な注釈に慣れていない場合は、 Javaチュートリアル。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top