Я все еще не понимаю цели аннотации в 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, где вы должны использовать текстовые обозначения для настройки вашей модели. Но здесь мы делаем то же самое с аннотациями. И я предполагаю, что работа аннотаций отличается в зависимости от используемой библиотеки и того, как эта библиотека определила аннотации для работы. Таким образом, @Persistent может означать одно в библиотеке JDO, но еще одна вещь в другой библиотеке. – Bijou
Да. Например, в Hibernate вы можете использовать файлы .hbm.xml для этой конфигурации или аннотации JPA. Это слишком распространено для библиотеки, чтобы использовать аннотации, указанные другим. В этом случае JDO является спецификацией Java, поддерживаемой/реализуемой несколькими библиотеками. Таким образом, это хранилище данных Google App Engine, читающее аннотации JDO. Менее распространено то, что они имели бы другое значение. Это, конечно, вполне возможно, и сделать это легче с помощью метаданных (аннотаций), чем программно (вызывая некоторые методы). – millimoose