Что значит гидратировать объект?

Когда кто-то говорит об увлажнении объекта, что это значит?

Я вижу проект Java под названием Hydrate в Интернете, который преобразует данные между различными представлениями (RDMS - OOPS в XML). Это общий смысл гидратации объекта; преобразовывать данные между представлениями? Может ли это означать реконструкцию иерархии объектов из хранимого представления?

Ответ 1

В отношении более общего термина гидрат

Увлажнение объекта принимает объект, который существует в памяти, который еще не содержит данных домена ( "реальные" данные), а затем заполняет его данными домена (например, из базы данных, из сети или из файловой системы).

От Эрика Робертсона комментирует этот ответ:

десериализация = инстанцирование + гидратация

Если вам не нужно беспокоиться о производительности blistering, и вы не отлаживаете оптимизацию производительности, находящуюся во внутренних интерфейсах API доступа к данным, вам, вероятно, не нужно явно обращаться с гидратацией. Обычно вы использовали десериализацию, чтобы вы могли писать меньше кода. Некоторые API-интерфейсы доступа к данным не предоставляют вам эту возможность, и в этих случаях вам также придется явно называть шаг гидратации самостоятельно.

Для более подробной информации о концепции гидратации см. ответ Эрика Робертсона по этому же вопросу.

Что касается проекта Java, называемого гидратом

Вы спросили об этой структуре специально, поэтому я просмотрел ее.

Насколько я могу судить, я не думаю, что этот проект использовал слово "гидрат" в очень общем смысле. Я вижу его использование в названии как примерный синоним "сериализации". Как объяснялось выше, это использование не совсем точно:

Смотрите: http://en.wikipedia.org/wiki/Serialization

перевод структур данных или состояния объекта в формат, который может быть сохранен [...] и реконструирован позже в той же или другой компьютерной среде.

Я не могу найти причину своего имени прямо на Часто задаваемые вопросы по гидрату, но я получил подсказку к их намерению. Я думаю, что они выбрали название "Hydrate", потому что цель библиотеки похожа на популярную звуковую структуру сушеные продукты). Это метафорическая противоположность Hibernate, которая больше похожа на "откладывание чего-то на зиму" (например, Animal Hibernation).

Решение назвать библиотеку Hydrate, насколько я могу судить, не было связано с общим термином "программирование" для компьютерного программирования.

При использовании универсального термина компьютерного программирования "гидрат" оптимизация производительности обычно является мотивацией (или отлаживанием существующих оптимизаций). Даже если библиотека поддерживает гранулированный контроль того, когда и как объекты заполняются данными, время и производительность, по-видимому, не являются основной мотивацией для имени или функциональности библиотеки. Библиотека больше заинтересована в обеспечении сквозного сопоставления и сохранения схемы.

Ответ 2

Гидратация относится к процессу заполнения объекта данными. Объект, который еще не был гидратирован, был создан и представляет собой объект, который имеет данные, но данные еще не загружены в объект. Это то, что сделано по соображениям производительности.

Кроме того, термин гидратация используется при обсуждении планов по загрузке данных из баз данных или других источников данных. Вот несколько примеров:

Можно сказать, что объект частично гидратируется, когда вы загружаете только некоторые из полей, но не все из них. Это можно сделать, потому что эти другие поля не нужны для ваших текущих операций. Таким образом, нет причин тратить полосы пропускания и загрузки ЦП, переносить и устанавливать эти данные, когда они не будут использоваться.

Кроме того, существуют некоторые ORM, такие как Doctrine, которые не гидратируют объекты при их создании, но только при доступе к данным в этом объекте. Это один из методов, который помогает не загружать данные, которые не будут использоваться.

Ответ 3

В то время как это несколько избыточно, как упоминал Мерлин, по моему опыту он ссылается только на заполнение/заполнение объекта, а не на создание/создание, поэтому это полезное слово, когда вам нужно быть точным.

Ответ 4

Это довольно старый вопрос, но кажется, что смысл следующих терминов все еще неясен. Надеюсь, это будет однозначно.

гидроокись

Когда вы видите описания, в которых говорится что-то вроде: "объект, ожидающий данных, ожидает гидратации", это сбивает с толку и вводит в заблуждение. Объекты не ждут чего-то, а гидратация - это просто процесс заполнения объекта данными.

Используя JavaScript в качестве примера:

const obj = {}; // empty object
const data = { foo: true, bar: true, baz: true };

// Hydrate "obj" with "data" 
Object.assign(obj, data); 
console.log(obj.foo); // true
console.log(obj.bar); // true
console.log(obj.baz); // true

Все, что добавляет значения obj, "увлажняет" его. Я просто использую Object.assign() в этом примере.

Сериализация

console.log(JSON.stringify({ foo: true, bar: true, baz: true }));

Deserialize

console.log(JSON.parse('{"foo":true,"bar":true,"baz":true}'));