Джастин Кейв прав, что это может привести к избыточным данным, но это действительно зависит от того, как вы проектируете свою базу данных.
Подход сериализации целого объекта в BLOB-объект не так возмутителен, как думает большинство людей. На самом деле, для некоторых приложений это может быть лучшим дизайном, который вы можете сделать, как я объяснил здесь: /programming//a/12644223/1121352 .
Действительно, сериализация объекта приводит как минимум к двум преимуществам:
1. Сокращение несоответствия импеданса : некоторые типы Java просто не доступны в SQL, особенно если вы используете много классов и пользовательских типов, поэтому преобразование объектов Java из SQL в SQL и обратно может быть огромной проблемой и даже привести к неоднозначности.
2- Больше гибкости в вашей схеме . Действительно, реляционные схемы действительно хороши для данных, которые имеют одинаковую структуру, но если некоторые из ваших объектов в пределах одного класса могут иметь разные свойства в зависимости от условий во время выполнения, реляционные схемы могут существенно затруднить ваш рабочий процесс.
Таким образом, у этого подхода, безусловно, есть преимущества (по крайней мере, эти два, но, конечно, другие, на которые я не ссылался), но, конечно, огромная цена, которую вы платите, заключается в том, что вы теряете почти все преимущества реляционных схем.
Однако вы можете получить лучшее из обоих миров, если тщательно спроектируете свою базу данных: вы все равно можете установить реляционную схему (т.е. столбцы уникальных ключей), используя атрибуты, уникальные для каждого объекта, и затем сохранить объект в BLOB-объекте. , Таким образом, вы все равно можете обеспечить быстрый поиск вашего объекта с помощью некоторого уникального идентификатора, который определяется атрибутами вашего объекта, также уменьшая избыточность, в то время как вы устраняете несоответствие импеданса и сохраняете полную гибкость объектов Java.
Напомним, что некоторые производители БД предприняли несколько попыток смешать реляционную и объектную модели, например, тип данных JSON в PostSQL и PostgreSQL, чтобы вы могли напрямую обрабатывать JSON, как любой реляционный столбец, а также SQL3 и OQL (Object Query Language) для добавления (ограниченной) поддержки объектов в SQL.
В конце концов, это все вопрос проектирования и компромисса между реляционной моделью и объектной моделью.
/ РЕДАКТИРОВАТЬ после прочтения комментариев: конечно, если ваши данные должны быть доступны для поиска («запрашиваемые»), вы НЕ должны хранить эти данные в виде большого двоичного объекта. Но если некоторые части ваших данных предназначены не для поиска , а для мета-данных, то сохранение этой части данных как объекта внутри большого двоичного объекта может быть хорошим решением, особенно если эти метаданные имеют гибкую структуру и может меняться от объекта к объекту.