Pergunta

Quando eu uso o unidade de padrão de trabalho (com JPA), recebo uma entidade de um repositório, modifico -a e salvo as modificações na e da unidade de trabalho implicitamente no banco de dados.

Agora me pergunto como realizar validação com a unidade de padrão de trabalho. Se eu aplicar alterações (da entrada do usuário) a um objeto de domínio e validar depois disso, os valores desse objeto serão alterados mesmo se a validação falhar. Qual é a maneira de evitar escrever um objeto com estado ilegal no banco de dados? Reverte a unidade de trabalho?

Um dos objetivos do OOP é que os objetos vigiam seu próprio estado, para que eles nunca aceitem valores ilegais. Para essa abordagem, tive que lançar exceções e é o oposto da abordagem de validação do feijão (e validação da primavera) de cima. Mas talvez seja mais simples e melhor.

Que estratégia de validação você usaria (no design orientado ao domínio)?

Foi útil?

Solução

Qual é a maneira de evitar escrever um objeto com estado ilegal no banco de dados? Reverte a unidade de trabalho?

Se você usar a API de validação do feijão, ela lançará uma exceção e as mudanças não serão persistidas (se ativado, a validação deve ocorrer na fase final do PrePersist, PreUpdate, e PreRemove eventos do ciclo de vida).

Com o JPA 2.0, basta colocar uma implementação de validação de feijão no caminho da classe.

Com JPA 1.0, consulte esta resposta anterior.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top