Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Estou com dúvida no curso de JPA 2: Introdução à persistência de dados com JPA e Hibernate, no exercício do capítulo Melhorando e organizando as queries.

Ao usar o NamedQuery não adicionamos responsabilidades a mais no em uma classe?

3 respostas

Sim, mas não vejo como um problema. Com a NamedQuery podemos colocar as queries que são vinculadas àquela entidade.

Em relação a organização fica perfeito, mas sempre somos instruídos a diminuir a coesão e ao meu ver usando o NamedQuery está coesão aumenta...

solução!

Não exatamente. A instrução é diminuir o acoplamento e aumentar a coesão. Daí vem a frase batida: "Baixo acoplamento e alta coesão".

Coesão no sentido do seu código ter sentido. O problema é que essa questão que você coloca gera conflitos de opiniões. Na minha opinião, faz sentido (há coesão) uma named query estar em uma entidade, principalmente se o retorno daquela query é um objeto ou uma lista de objetos da mesma.

Quanto ao acoplamento, só haverá acoplamento se você utilizar qualquer tecnologia que não seja a especificação JPA. Se for JPA, você vai "acoplar" o código de uma especificação, não importando a implementação. Ou seja, ao meu ver, não há acoplamento. Eu posso mudar a implementação entre Hibernate, EclipseLink ou OpenJPA que minha query continua funcionando.