Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Hibernate aula4 ex6 entendi bulufas

Não entendi nada, nem com resposta. Alguem podia me explicar o q tem a ver com a aula e como resolver?

1 resposta
solução!

Oi Antonio,

Essa atividade utilizou um outro exemplo de classes que não são utilizadas no curso, apenas para reforçar o entendimento do assunto.

A atividade propõe o seguinte problema:

Imagine que você precise implementar um mecanismo de login no sistema, onde haverá um cadastro de usuários e de suas permissões.

Nesse caso você provavelmente teria uma classe para representar o usuário e outra para representar a permissão:

public class Usuario {
}
public class Permissao {
}

Mas essas duas classes precisam se relacionar, seguindo a regra de que um usuário pode ter mais de uma permissão, ou seja, precisamos adicionar um atributo à classe Usuario:

public class Usuario {

    private List<Permissao> permissoes;
}

Como haverá um cadastro de usuários e permissões, precisamos mapear essas classes como sendo entidades da JPA:

@Entity
public class Usuario {

    private List<Permissao> permissoes;
}
@Entity
public class Permissao {
}

E agora falta apenas indicar qual a cardinalidade(um-para-um, um-para-muitos, muitos-para-muitos ou muitos-para-um) do relacionamento entre usuário e permissão.

No exemplo apresentado na atividade, foi atribuido a cardinalidade de um-para-muitos:

@Entity
public class Usuario {

    @OneToMany
    private List<Permissao> permissoes;
}

Mas isso está incorreto, pois um usuário pode ter várias permissões, mas uma mesma permissão também pode estar atribuida a mais de um usuário ao mesmo tempo, ou seja, o correto nesse caso seria muitos-para-muitos:

@Entity
public class Usuario {

    @ManyToMany
    private List<Permissao> permissoes;
}

Se for mapeada com @OneToMany cada permissão somente poderia ser atribuida a um único usuário, e por isso a resposta correta da atividade é a opção A.

Ficou mais claro ?

Bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software