Todavía no estoy seguro del propósito de las anotaciones en Java. Inicialmente pensé que solo servían como documentación. Pero mirando esta documentación desde Google App Engine Datastore, no estoy tan seguro. @PersistenceCapable (identityType = IdentityType.APPLICATION) se parece más a una firma de método.¿Qué función sirven estas anotaciones de Java?
¿Cuál es el propósito de este tipo de anotación? ¿Qué hace?
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, entonces esta clase, entonces es una forma abreviada de definir su modelo. En los viejos tiempos, como dijiste, podrías tener un archivo de configuración en Struts donde usarías notaciones de texto para configurar tu modelo. Pero aquí estamos haciendo lo mismo con las anotaciones. Y asumo que la forma en que funcionan las anotaciones difiere según la biblioteca que esté utilizando y cómo esa biblioteca ha definido las anotaciones para que funcionen. Entonces, @Persistent podría significar una cosa en la biblioteca de JDO pero otra cosa en alguna otra biblioteca. – Bijou
Sí. Por ejemplo, en Hibernate, puede usar archivos .hbm.xml para realizar esta configuración o anotaciones JPA. Es semi-común que una biblioteca use anotaciones especificadas por otra. En este caso, JDO es una especificación de Java que varias bibliotecas admiten/implementan. Por lo tanto, es el almacén de datos de Google App Engine que lee las anotaciones de JDO. Sin embargo, es menos común que tengan un significado diferente. Por supuesto, es completamente posible, y es más fácil hacerlo a través de metadatos (anotaciones) que programáticamente (llamando a algunos métodos). – millimoose