Actualmente estoy aprendiendo Hibernate y la API Java Persistence.javax.persistence Anotaciones en campo, getter o setter?
Tengo una clase @Entity, y necesito aplicar anotaciones a los diversos campos. He incluido en el código debajo de los tres lugares donde podrían ir.
¿Debo aplicarlos al campo en sí, el captador o el colocador? Y cuál es la diferencia semántica, si la hay, entre estas tres opciones.
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Id;
@Entity
@Table(name = "song")
public class Song {
// Annotations should only be applied to one of the below
@Id
@Column(name="id", unique=true, nullable=false)
private int id;
@Id
@Column(name="id", unique=true, nullable=false)
public int getId() {
return id;
}
@Id
@Column(name="id", unique=true, nullable=false)
public void setId(int id) {
this.id = id;
}
}
Posible duplicado http://stackoverflow.com/questions/4188048/why-should-anybody-put-annotations-on-the-getters-or-setters-when-using- jpa-to-m –
Las anotaciones en los setters no son compatibles porque es más difícil determinar el tipo de clase del campo utilizando la reflexión para un setter. Para un getter, todo lo que tiene que hacer es verificar el tipo de devolución del método. Pero para un colocador, ¿qué haces si le pasas múltiples parámetros? –