Sobreescrita de equals
Sempre que vejo uma classe POJO, vejo a sobreescrita do método equals. Isso é obrigatório? Esse é de um exemplo que estou estudando.
@Entity
@Table(name="matricula")
@SequenceGenerator(name="seq_matricula", sequenceName="matricula_idmatricula_seq", allocationSize=1)
public class Matricula implements Serializable{
private static final long serialVersionUID = 0L;
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq_matricula")
@Column(name="idmatricula")
private Integer idmatricula;
@Column(name="idpessoa")
private Integer idpessoa;
@Column(name="idescola")
private Integer idescola;
@Temporal(TemporalType.DATE)
private Calendar dtmatricula;
@Column(name="situacao")
private String situacao;
public Matricula(){
}
public Matricula(Integer idmatricula,Integer idpessoa, Integer idescola,java.util.Calendar dtmatricula,String situacao){
this.idmatricula = idmatricula;
this.idpessoa = idpessoa;
this.idescola = idescola;
this.dtmatricula = dtmatricula;
this.situacao = situacao;
}
public long getIdmatricula() {
return idmatricula;
}
public void setIdmatricula(Integer idmatricula) {
this.idmatricula = idmatricula;
}
public long getIdprofessor() {
return idpessoa;
}
public void setIdprofessor(Integer idpessoa) {
this.idpessoa = idpessoa;
}
public long getIdescola() {
return idescola;
}
public void setIdescola(Integer idescola) {
this.idescola = idescola;
}
public java.util.Calendar getDtmatricula() {
return dtmatricula;
}
public void setDtmatricula(java.util.Calendar dtmatricula) {
this.dtmatricula = dtmatricula;
}
public String getSituacao() {
return situacao;
}
public void setSituacao(String situacao) {
this.situacao = situacao;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Matricula other = (Matricula) obj;
if (idmatricula == null) {
if (other.idmatricula != null)
return false;
} else if (!idmatricula.equals(other.idmatricula))
return false;
return true;
}
}
Pjava
Curtidas 0
Respostas
Anthony Accioly
19/05/2011
PJava,
O método equals é o método no qual você define a regra de negócios para dizer se dois objetos são iguais. Se você não faz a sobreescrita de equals, duas matrículas com o mesmo ID não são consideradas iguais.
Por exemplo (comente o método equals do seu código e teste você mesmo):
Eis um tópico recente do meu Blog falando sobre o assunto:
http://a.accioly.7rtc.com/2011/05/java-vs-equals.html
Moderadores, desculpe a propaganda direcionada aqui hehehe.
O método equals é o método no qual você define a regra de negócios para dizer se dois objetos são iguais. Se você não faz a sobreescrita de equals, duas matrículas com o mesmo ID não são consideradas iguais.
Por exemplo (comente o método equals do seu código e teste você mesmo):
Matricula m1 = new Matricula(); m1.setIdmatricula(10); Matricula m2 = new Matricula(); m2.setIdmatricula(10); System.out.println(m1.equals(m2)); // false
Eis um tópico recente do meu Blog falando sobre o assunto:
http://a.accioly.7rtc.com/2011/05/java-vs-equals.html
Moderadores, desculpe a propaganda direcionada aqui hehehe.
GOSTEI 0
Davi Costa
19/05/2011
As ide´s geram esse código automático facilitando muito a nossa vida. Inclusive vc pode fazer algumas sobrescrições não só pelo id, mas com o id e outros atributos também. Algumas vezes isso faz bem sentido e ajudo muito.
Att Davi
Att Davi
GOSTEI 0
Anthony Accioly
19/05/2011
As ide´s geram esse código automático facilitando muito a nossa vida. Inclusive vc pode fazer algumas sobrescrições não só pelo id, mas com o id e outros atributos também. Algumas vezes isso faz bem sentido e ajudo muito.
Att Davi
Att Davi
Aproveitando o gancho, no artigo do meu blog mencionado acima, tem um resuminho de como gerar o método equals no Eclipse, Netbeans e IntelliJ.
GOSTEI 0