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)?

È stato utile?

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 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top