¿Cómo maneja las excepciones de base de datos en su aplicación?
¿Está tratando de validar datos antes de pasarlos a DB o simplemente confiar en la lógica de validación del esquema DB?
¿Intenta recuperarse de algún tipo de error de DB (por ejemplo, tiempos de espera)?Prácticas recomendadas de manejo de excepciones de base de datos
He aquí algunos enfoques:
- Validar los datos anteriores pasándolo a DB
- validación de izquierda a DB y manejar excepciones DB adecuadamente
- Validar en ambos lados
- Validar algunas limitaciones obvias en los negocios lógica y validación compleja izquierda a DB
¿Qué enfoque utiliza? ¿Por qué?
actualizaciones:
Me alegro de ver cada vez mayor discusión.
Tratemos de resumir las respuestas de la comunidad.
Sugerencias:
- Validar en ambos lados
- Restricciones de comprobación lógica de negocio en lado del cliente, permiten DB hacen comprobaciones de integridad from hamishmcn
- Comprobar temprano para evitar molestar a DB from ajmastrean
- Comprobar pronto para mejorar la experiencia del usuario from Will
- Mantener el código de interacción de BD en su lugar al simplificar el desarrollo from hamishmcn
- mapeo objeto-relacional (NHibernate, LINQ, etc) puede ayudar a hacer frente a restricciones from ajmastrean
- validación del lado del cliente es necesaria por razones de seguridad from Seb Nilsson
¿Tiene todo lo demás ¿decir? Esto se convierte a la pregunta específica de Validación. Nos falta el núcleo, es decir, "Mejores prácticas de error relacionadas con la base de datos", ¿cuáles manejar y cuáles Bubble up?
[@hamishmcn] (http://stackoverflow.com/questions/39371/database-exception-handling-best-practices#39406). buen punto, una razón para tener validación en la capa de lógica de negocios es crear una interfaz de usuario fácil de usar. Pero tener estas validaciones en múltiples lugares rompe el principio DRY. ¿Cómo se las arregla para mantener las validaciones del DB y del lado del cliente sincronizadas? – aku