Justin Cave a raison de dire que cela peut conduire à des données redondantes, mais cela dépend vraiment de la façon dont vous concevez votre base de données.
L'approche consistant à sérialiser un objet entier en une goutte n'est pas aussi scandaleuse que la plupart des gens ici le pensent. En fait, pour certaines applications, cela peut être la meilleure conception que vous puissiez faire, comme je l'ai expliqué ici: /programming//a/12644223/1121352 .
En effet, la sérialisation d'un objet entraîne au moins deux avantages:
1- Réduire l'inadéquation de l'impédance : certains types Java ne sont tout simplement pas disponibles dans SQL, en particulier si vous utilisez beaucoup de classes et de types personnalisés, donc la conversion aller-retour des objets Java en SQL peut être très compliquée et même conduire à des ambiguïtés.
2- Plus de flexibilité dans votre schéma . En effet, les schémas relationnels sont vraiment parfaits pour les données qui partagent la même structure, mais si certains de vos objets au sein d'une même classe peuvent avoir des propriétés différentes selon les conditions au moment de l'exécution, les schémas relationnels peuvent entraver considérablement votre flux de travail.
Ainsi, il y a certainement des avantages à cette approche (au moins ces deux, mais certainement d'autres que je n'ai pas cités), mais bien sûr, le coût énorme à payer est que vous perdez presque tous les avantages des schémas relationnels.
Cependant, vous pouvez tirer le meilleur parti des deux mondes si vous concevez soigneusement votre base de données: vous pouvez toujours définir un schéma relationnel (c'est-à-dire: des colonnes de clés uniques) en utilisant les attributs qui sont uniques pour chaque objet, puis stocker l'objet dans le blob . De cette façon, vous pouvez toujours garantir une récupération rapide de votre objet étant donné un identifiant unique défini par les attributs de votre objet, réduisant également la redondance, tout en annulant la non-correspondance d'impédance et en conservant la flexibilité totale des objets Java.
En guise de remarque, quelques fabricants de bases de données tentent de mélanger des modèles relationnels et d'objets, comme le type de données JSON dans PostSQL et PostgreSQL afin que vous puissiez traiter directement JSON comme n'importe quelle colonne relationnelle, ainsi que SQL3 et OQL (Object Query Language) pour ajouter la prise en charge d'objets (limités) dans SQL.
Au final, tout est affaire de conception et de compromis entre le modèle relationnel et le modèle objet.
/ MODIFIER après avoir lu les commentaires: bien sûr, si vos données doivent être consultables ("interrogeables"), vous ne devez PAS stocker vos données en tant qu'objet blob. Mais si certaines parties de vos données ne sont pas censées être consultables , mais plutôt une sorte de métadonnées, le stockage de cette partie de données en tant qu'objet dans un blob peut être une bonne solution, surtout si ces métadonnées ont une structure flexible. et peut changer d'objet en objet.