私はまだ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...
}
このクラスは、モデルを定義する簡潔な方法です。昔、あなたが言ったように、モデルを構成するためにテキスト表記を使用するStrutsに設定ファイルがあるかもしれません。しかし、ここではアノテーションで同じことをやっています。そして、私は、使用しているライブラリとそのライブラリがどのようにアノテーションを定義しているかによって、アノテーションの動作が異なることを前提としています。だから、@永続性はJDOライブラリの中の一つのことを意味するかもしれないが、ある他のライブラリの中の別のものを意味するかもしれない。 – Bijou
はい。たとえば、Hibernateでは、.hbm.xmlファイルを使用してこの設定を行うか、JPA注釈を使用できます。 別のライブラリで指定されたアノテーションを使用するのは、ライブラリの半共通です。この例では、JDOはいくつかのライブラリがサポート/実装するJava仕様です。したがって、JDOアノテーションを読み込むのはGoogle App Engineのデータストアです。 しかし、彼らは別の意味を持っていることはあまりありません。もちろん、これは完全に可能であり、プログラム的に(いくつかのメソッドを呼び出す)よりメタデータ(注釈)を使ってこれを行う方が簡単です。 – millimoose