Nadal nie jestem jasny w sprawie adnotacji w Javie. Początkowo myślałem, że służą tylko jako dokumentacja. Ale patrząc na tę dokumentację z Google App Engine Datastore, nie jestem tego taki pewien. @PersistenceCapable (identityType = IdentityType.APPLICATION) wygląda bardziej jak podpis metody.Jaką funkcję mają te adnotacje Java?
Jaki jest cel tego typu adnotacji? Co to robi?
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...
}
Ok, więc ta klasa to rodzaj stenograficznego sposobu definiowania modelu. W dawnych czasach, jak powiedziałeś, możesz mieć plik konfiguracyjny w Struts, w którym używałbyś notacji tekstowych do konfiguracji swojego modelu. Ale tutaj robimy to samo z adnotacjami. Zakładam, że sposób działania adnotacji różni się w zależności od używanej biblioteki i od tego, jak biblioteka zdefiniowała adnotacje do działania. Tak więc @Persistent może oznaczać jedną rzecz w bibliotece JDO, ale inną rzecz w innej bibliotece. – Bijou
Tak. Na przykład w trybie hibernacji można użyć plików .hbm.xml do wykonania tej konfiguracji lub adnotacji JPA. To jest pół-wspólne dla biblioteki, aby używać adnotacji określonych przez inną. W tym przypadku JDO jest specyfikacją Java, którą kilka bibliotek obsługuje/implementuje. Tak więc to magazyn danych Google App Engine czyta adnotacje JDO. Mniej powszechne jest, że mają one inne znaczenie. Jest to oczywiście całkowicie możliwe i łatwiej jest to zrobić za pomocą metadanych (adnotacji) niż programowo (wywoływanie niektórych metod). – millimoose