strategia di convalida per l'unità del modello di lavoro
-
25-09-2019 - |
Domanda
Quando uso il unità di modello di lavoro (con JPA), ottengo un'entità da un repository, modificarlo e salvare le modifiche alla e della unità di lavoro in modo implicito al database.
Ora mi chiedo come eseguire la convalida con l'unità di modello di lavoro. Se applico le modifiche (da input dell'utente) a un oggetto di dominio e validate dopo che, i valori di tale oggetto sarebbe cambiato anche se la convalida non riesce. Qual è il modo di evitare di scrivere un oggetto con lo stato illegale alla banca dati? Rollback l'unità di lavoro?
Uno degli obiettivi della programmazione orientata agli oggetti è che gli oggetti vegliano proprio stato, in modo che essi non accettano valori illegali. Per questo approccio ho dovuto buttare eccezioni ed è l'opposto dell'approccio convalida di fagioli (e validazione primavera) dall'alto. Ma forse è più semplice e migliore.
Quale strategia di convalida usereste (nel Domain Driven Design)?
Soluzione
Qual è il modo di evitare di scrivere un oggetto con lo stato illegale alla banca dati? Rollback l'unità di lavoro?
Se si utilizza l'API Bean Validation, è un'eccezione e non verrà persistito modifiche (se abilitato, si suppone che la convalida a verificarsi nella fase finale degli eventi PrePersist
, PreUpdate
, e PreRemove
ciclo di vita).
Con JPA 2.0, basta mettere un'implementazione Bean Validation sul percorso di classe.
Con JPA 1.0, fare riferimento a questa risposta precedente .