GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Chave Composta Diagrama de Classe

Estou fazendo um diagrama de classe de um sistema que estou desenvolvendo, porém o sistema tem chave composta. Alguém já modelou um diagrama de classe utilizando chave composta? Se sim como ficaria no diagrama as classes?

Chave composta? Você não estaria desenvolvendo um DER?

Não, estou fazendo um diagrama de classe, de um sistema java web com jsf e hibernate e gostaria de saber como passaria para um diagrama de classe um mapeamento composto no caso tenho uma classe cidade

@Colum(name=id)
private Integer id;

@Colum(name=nome)
private String nome;

Depois tenho uma classe BairroPk onde tem dois campos

@Colum(name=“id_bairro”)
private Integer = idBairro;

@Colum(name=“id_cidade”)
private Integer = idCidade;

e a classe Bairro com os campos

@EmbeddedId
private BairroPK id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name=“id_cidade”, referencedColumnName = “id”, insertable = false, updatable = false)
private Cidade cidade;

Aminha duvida é como ficaria estas duas classes no diagrama de classe

Você pode criar uma classe contendo as chaves e coloca-la como atributo da classe que terá essa chave composta. Por exemplo:

public class CarroPK() {
     private Integer chave1;
     private Integer chave2;
}

public class Carro() {
     private CarroPK chaveComposta;
}

Fazer um diagrama de classes, com classes que possuem uma chave composta, é feitoda mesma forma para fazer qualquer classe. Defina a classe no diagrama, coloque os atributos, tipos, modificadores, etc.

Bom fiz dessa maneira, será que esta correto?

1 Curtida

Exatamente! Eu apenas retiraria a relação entre Cidade e BairroPk, pois não há essa relação entre as classes. Essa relação deveria está com a classe Bairro.

Isso é trabalho de faculdade? Se não for, é perda de tempo.

Então lucas mas como estou trabalhando com chave composta no hibernate, existe esta classe BairroPk, mas no caso então, vc faria assim, com o id BairroPk na classe Bairro mostrando que é um ligação composta

Deixaria BairroPk do jeito que estava, apenas retiraria a linha que liga Cidade e BairroPk e colocaria ligando Cidade e Bairro. Pois você tem um atributo Cidade dentro de Bairro e não dentro de BairroPk.