Uma dúvida frequente entre aqueles que estão dando seus primeiros passos com Grails diz respeito ao modo como declaramos os relacionamentos entre nossas classes de domínio com o belongsTo. Quando devemos usá-lo?
Vamos supor a existência de um domínio composto por duas classes ilustrado no diagrama a seguir:
Um livro encontra-se associado a um autor. No caso do GORM é possível representar esta associação de duas formas na classe Livro, com ou sem belongsTo:
class Livro {
Autor autor
}
ou
class Livro {
static belongsTo = [autor:Autor]
}
Qual opção você usa? Depende do tipo de cascateamento desejado. Segue uma regra super simples para que você decore.
Se a exclusão do pai obrigatoriamente implicar na exclusão dos filhos (a exclusão do autor excluiria os livros), use belongsTo.
Se quiser evitar a exclusão do pai quando já houverem filhos cadastrados, não use belongsTo.
Simples assim. Neste post falei apenas sobre o belongsTo, mas em um próximo pretendo falar sobre hasMany e por que recomendo a você minimizar ao máximo seu uso.