Justin Cave está certo de que isso pode levar a dados redundantes, mas isso realmente depende de como você cria seu banco de dados.
A abordagem de serializar um objeto inteiro em um blob não é tão ultrajante quanto a maioria das pessoas pensa. De fato, para alguns aplicativos, esse pode ser o melhor design possível, como expliquei aqui: /programming//a/12644223/1121352 .
De fato, serializar um objeto leva a pelo menos dois benefícios:
1- Reduzindo a incompatibilidade de impedância : alguns tipos Java simplesmente não estão disponíveis no SQL, principalmente se você usa muitas classes e tipos personalizados, portanto, converter e voltar de objetos Java para SQL pode ser um grande aborrecimento e até levar a ambiguidades.
2- Mais flexibilidade no seu esquema . De fato, os esquemas relacionais são realmente ótimos para dados que compartilham a mesma estrutura, mas se alguns de seus objetos em uma única classe puderem ter propriedades diferentes, dependendo das condições do tempo de execução, os esquemas relacionais podem prejudicar significativamente o fluxo de trabalho.
Portanto, certamente existem benefícios para essa abordagem (pelo menos esses dois, mas certamente outros que não citei), mas é claro que o enorme custo a pagar é que você perde quase todos os benefícios dos esquemas relacionais.
No entanto, você pode obter o melhor dos dois mundos se projetar cuidadosamente seu banco de dados: ainda é possível definir um esquema relacional (por exemplo: colunas-chave exclusivas) usando os atributos exclusivos de cada objeto e armazená-lo no blob . Dessa forma, você ainda pode garantir a recuperação rápida do seu objeto, dado um identificador exclusivo definido pelos atributos do seu objeto, reduzindo também a redundância, enquanto aniquila a incompatibilidade de impedância e mantém total flexibilidade dos objetos Java.
Como observação lateral, existem algumas tentativas de alguns fabricantes de banco de dados de combinar modelos relacionais e de objetos, como o tipo de dados JSON no PostSQL e PostgreSQL, para que você possa processar JSON diretamente como qualquer coluna relacional e também SQL3 e OQL (Object Query Language) para adicionar suporte a objetos (limitados) no SQL.
No final, tudo isso é uma questão de design e compromisso entre o modelo relacional e o modelo de objeto.
/ EDITAR depois de ler os comentários: é claro, se seus dados devem ser pesquisáveis ("consultáveis"), você NÃO deve armazenar seus dados como um blob. Porém, se algumas partes dos seus dados não pretendem ser pesquisáveis , mas algum tipo de metadado, o armazenamento dessa parte como um objeto dentro de um blob pode ser uma boa solução, especialmente se esses metadados tiverem uma estrutura flexível e pode mudar de objeto para objeto.