Pregunta

Cuando uso la unidad de patrón de trabajo (con JPA), me sale una entidad desde un repositorio, modificarlo y guardar las modificaciones y en el de la unidad de trabajo de forma implícita a la base de datos.

Ahora me pregunto cómo debe realizarse la validación con la unidad del patrón de trabajo. Si aplico cambios (desde la entrada del usuario) a un objeto de dominio y validar después de eso, los valores de ese objeto se cambiarían incluso si falla la validación. ¿Cuál es la manera de evitar la escritura de un objeto con el estado ilegal a la base de datos? Hacer retroceder la unidad de trabajo?

Uno de los objetivos de la programación orientada a objetos es que miran objetos sobre su propio estado, por lo que nunca aceptan valores ilegales. Para que este enfoque tenía que lanzar excepciones y es lo contrario del enfoque de validación de frijol (y validación de primavera) desde arriba. Pero tal vez es más simple y mejor.

¿Qué estrategia de validación tendría que utilizar (en el diseño de dominio impulsada)?

¿Fue útil?

Solución

  

¿Cuál es la manera de evitar la escritura de un objeto con el estado ilegal a la base de datos? Hacer retroceder la unidad de trabajo?

Si se utiliza la API Bean Validation, se lanzará una excepción y no será persistido cambios (si está activado, la validación se supone que ocurre en la etapa final de los eventos PrePersist, PreUpdate y PreRemove del ciclo de vida).

Con JPA 2.0, sólo hay que poner una implementación Bean Validation en la ruta de clase.

Con JPA 1.0, consulte esta respuesta anterior .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top