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

JPA / Hibernate

Quando desenvolvia em Delphi eu costumava gravar os IDS de todas as tabelas relacionadas. Por exemplo: Gravando um produto eu preciso guardar qual o usuário que realizou o INSERT e posteriormente guardar quem foi o último usuário que gravou um UPDATE. Eu tinha meios para pegar o ID do Usuário na sua tabela e gravar em Produtos, eu não inseria o nome. Eu colocava o ID de tudo que era possível, por exemplo de novo: a categoria do produto, eu gravaria o ID da categoria na tabela produto. Tudo isso para economizar espaço em tabela. Eu trabalhava com milhões de registros. Neste caso ganhava-se muito com estas práticas. Pergunta: como faço isso hoje com JPA? As práticas de hoje (com JPA) continua gravar IDS, ou grava-se as descrições? Obrigado!

2 respostas
solução!

Adauto,

Como o JPA pensa orientado a objetos, nesse caso voce poderia ter uma Entidade Produto que possui um atributo do tipo Usuario. Desse modo, sempre que você criar um novo produto, você atrelaria o usuário a esse produto:

Produto produto = new Produto();
produto.setUsuario ( usuario );
EntityManager.persist(produto);

Voce pode até renomear a coluna de usuario para por exemplo "usuario_insercao".

Na sua Entidade Produto, essa relacao entre Produto X Usuario seria uma relacao @ManyToOne, onde varios produtos podem ter apenas um usuario_insercao cada.

Para o update seria a mesma ideia, só que ao invez de setar o usuario de inserção no persist do produto, seria no merge.

Espero ter ajudado.

Oi Luis! Ajudou muito sim. Confesso que eu pensei em fazer isso, mas achei que fosse uma forma de contornar o problema. Obrigado!

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