Códigos são legais par auma tabela referenciar a outra, para um objeto referenciar o outro, use uma referência.
Se seu Artista possui mais que um código como atributo, faz mais sentido você ter algo que se relaciona com o Artista (aponta pra ele) do que algo que sabe o código do artista e trabalha com ele (um dado privado).
Exato, Rafael… quanto menos partes do sistema sequer souberem que o Artista tem um ‘id’, esse treco artificial que vc colocou na classe por causa da persistencia
if(creed.equals(pearlJam){
japoneix();
}
Eu teria de implementar um método equals() em todas as minhas classes. Não seria gerar um trabalho desnecessário?
Primeiro, você tem certeza que vai querer espalhar seus ifs por um milhão de lugares diferentes no código, podendo ao invés disso chamar um método?
Além do que, como o Carlos mencionou, o ID é algo artificial, geralmente precisamos criar dados assim para coisas como persistência ou comunicação entre sistemas, na maioria isso interessa a apenas uma ou duas classes numa única camada.
Se você amarrar todas as classes clientes da sua ao conceito de ID (pra começar já vai estar expondo um dado a mais!), você vai fazer com que todas dependam do atributo artificial que foi feito só para uma “gambiarra” qualquer.
Além do que, o papel de definir se um objeto é igual ao outro é relativo. De repente, o ID não é tão importante, eu não poderia ter duas bandas chamadas “Creed”, então meu equals deveria comparar os nomes também. Se eu fizer um && em todos os meus ifs espalhados por aí que comparam os códigos… putz, você vai aumentar o acoplamento enormemente por todo lugar.
Faça os clientes dependerem o quanto menos possível dos atributos das classes que disponibilizam um serviço, evite código repetido.
É claro que num sistema muito simples implementar equals pode ser um overhead, cabe a quem está programando analisar as opções, mas se você quer manter um acoplamento baixo, não dependa dos atrbiutos dos objetos
Além do que o Phillip falou, saiba que fazer override de equals as vezes é ótimo, mas pode dar zebra. Lembre-se do capítulo 3 do livro Effective Java do Joshua Bloch que TODOS os programadores Java precisam ler ao menos uma vez: