7

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...
}
4

3 に答える 3

9

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

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

JDO の GAE サポートは、データベースに格納しようとするオブジェクトを認識する必要があります。これは、コード内のクラスを調べて、@PersistenceCapable で注釈が付けられたクラスを探すことによって行われます。

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

于 2009-04-30T19:51:27.590 に答える
1

注釈は、注釈処理ツール APIを使用して処理し、ボイラープレート コードを自動生成できます。

于 2009-04-30T19:53:48.160 に答える
0

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

一般的なアノテーションに慣れていない場合は、Java チュートリアルを確認してください。

于 2009-04-30T19:52:15.310 に答える