Justin Cave tiene razón en que esto puede conducir a datos redundantes, pero esto realmente depende de cómo diseñe su base de datos.
El enfoque de serializar un objeto completo en una gota no es tan escandaloso como la mayoría de las personas aquí piensan que es. De hecho, para algunas aplicaciones, este puede ser el mejor diseño que puede hacer, como lo expliqué aquí: /programming//a/12644223/1121352 .
De hecho, serializar un objeto conlleva al menos dos beneficios:
1- Reducción de la falta de coincidencia de impedancia : algunos tipos de Java simplemente no están disponibles en SQL, particularmente si usa muchas clases y tipos personalizados, por lo tanto, la conversión de objetos Java a SQL puede ser una molestia enorme e incluso generar ambigüedades.
2- Más flexibilidad en tu esquema . De hecho, los esquemas relacionales son realmente excelentes para los datos que comparten la misma estructura, pero si algunos de sus objetos dentro de una sola clase pueden tener diferentes propiedades dependiendo de las condiciones en tiempo de ejecución, los esquemas relacionales pueden obstaculizar significativamente su flujo de trabajo.
Por lo tanto, ciertamente hay beneficios para este enfoque (al menos estos dos, pero ciertamente otros que no cité), pero, por supuesto, el gran costo a pagar es que pierde casi todos los beneficios de los esquemas relacionales.
Sin embargo, puede obtener lo mejor de ambos mundos si diseña cuidadosamente su base de datos: aún puede establecer un esquema relacional (es decir, columnas de clave únicas) utilizando los atributos que son únicos para cada objeto, y luego almacenar el objeto en el blob . De esta manera, aún puede garantizar la recuperación rápida de su objeto dado un identificador único que está definido por los atributos de su objeto, lo que también reduce la redundancia, mientras aniquila la falta de coincidencia de impedancia y mantiene la flexibilidad total de los objetos Java.
Como nota al margen, algunos fabricantes de bases de datos intentan mezclar modelos relacionales y de objetos, como el tipo de datos JSON en PostSQL y PostgreSQL para que pueda procesar directamente JSON como cualquier columna relacional, y también SQL3 y OQL (Object Query Language) para agregar objetos (limitados) a SQL.
Al final, todo esto es una cuestión de diseño y compromiso entre el modelo relacional y el modelo de objetos.
/ EDITAR después de leer los comentarios: por supuesto, si sus datos deben ser buscables ("consultables"), NO debe almacenar sus datos como un blob. Pero si algunas partes de sus datos no deben buscarse , sino más bien algún tipo de metadatos, entonces almacenar esta parte de datos como un objeto dentro de un blob puede ser una buena solución, especialmente si estos metadatos tienen una estructura flexible y puede cambiar de un objeto a otro.