Когда кто-то говорит о увлажнении объекта, что это значит?
Я вижу в сети Java-проект под названием Hydrate, который преобразует данные между различными представлениями (RDMS в OOPS в XML). Это общий смысл гидратации объекта; преобразовать данные между представлениями? Может ли это означать восстановление иерархии объектов из сохраненного представления?
Ответы:
Что касается более общего термина гидрат
При гидратации объекта берется объект, который существует в памяти, но еще не содержит данных домена («настоящие» данные), а затем заполняет его данными домена (например, из базы данных, из сети или из файла). система).
Из комментариев Эрика Робертсона к этому ответу:
Если вам не нужно беспокоиться о быстром росте производительности и вы не отлаживаете оптимизацию производительности, которая находится внутри API доступа к данным, то вам, вероятно, не нужно явно иметь дело с гидратацией. Вместо этого вы обычно используете десериализацию, чтобы писать меньше кода. Некоторые API доступа к данным не дают вам такой возможности, и в этих случаях вам также придется явно вызывать этап гидратации самостоятельно.
Для более подробной информации о концепции гидратации см . Ответ Эрика Робертсона на этот же вопрос.
Что касается проекта Java под названием гидрат
Вы спрашивали об этой структуре конкретно, поэтому я изучил ее.
Насколько я могу судить, я не думаю, что этот проект использовал слово «гидрат» в очень общем смысле. Я вижу его использование в названии в качестве приблизительного синонима для «сериализации». Как объяснено выше, это использование не совсем точно:
Смотрите: http://en.wikipedia.org/wiki/Serialization
Я не могу найти причину их имени непосредственно в FAQ по Hydrate , но у меня есть подсказки к их намерению. Я думаю, что они выбрали название «Hydrate», потому что назначение библиотеки аналогично популярному фреймворку Hibernate , похожему на звук , но оно было разработано с учетом совершенно противоположного рабочего процесса.
Большинство ORM, включая Hibernate, используют подход, ориентированный на объектную модель в памяти, с базой данных, принимающей вторую оценку. Вместо этого библиотека Hydrate использует подход, ориентированный на схему базы данных, сохраняя ваши реляционные структуры данных и позволяя вашей программе работать поверх них более аккуратно.
Говоря метафорически, все еще в отношении названия этой библиотеки: « Гидрат» - это как «готовить что-то готовое к употреблению» (как, например, повторное увлажнение сушеных продуктов ). Это метафорическая противоположность Hibernate , которая больше похожа на «отложить что-то на зиму» (например, Animal Hibernation ).
Насколько я могу судить, решение назвать библиотеку Hydrate не было связано с общим термином компьютерного программирования "гидрат".
При использовании общего термина компьютерного программирования «гидрат» оптимизация производительности обычно является мотивацией (или отладкой существующих оптимизаций). Даже если библиотека поддерживает детальный контроль над тем, когда и как объекты заполняются данными, время и производительность не кажутся основной мотивацией для имени или функциональности библиотеки. Библиотека, кажется, больше заинтересована в обеспечении сквозного отображения и сохранения схемы.
источник
deserialization == instantiation + hydration
@foo
не нужно при ответе автору поста.Гидратация относится к процессу заполнения объекта данными. Объект, который еще не был гидратирован, был создан и представляет объект, у которого есть данные, но данные еще не были загружены в объект. Это то, что сделано из соображений производительности.
Кроме того, термин гидратация используется при обсуждении планов загрузки данных из баз данных или других источников данных. Вот некоторые примеры:
Вы можете сказать, что объект частично увлажнен, когда вы загрузили в него только некоторые поля, но не все. Это может быть сделано, потому что эти другие поля не нужны для ваших текущих операций. Поэтому нет необходимости тратить пропускную способность и циклы ЦП на загрузку, передачу и настройку этих данных, когда они не будут использоваться.
Кроме того, есть некоторые ORM, такие как Doctrine, которые не гидратируют объекты при их создании, а только при обращении к данным в этом объекте. Это один из методов, который помогает не загружать данные, которые не будут использоваться.
источник
Несмотря на то, что, как упоминал Мерлин, это несколько избыточно на местном языке, но по моему опыту оно относится только к заполнению / заполнению объекта, а не к его созданию / созданию, поэтому это полезное слово, когда вам нужно быть точным.
источник
deserialization == instantiation + hydration
).Это довольно старый вопрос, но кажется, что смысл следующих терминов все еще неясен. Надеюсь, это будет однозначно.
гидроокись
Когда вы видите описания, в которых говорится что-то вроде: «объект, ожидающий данных, ожидает гидратации», это сбивает с толку и вводит в заблуждение. Объекты не ждут чего-то, а гидратация - это просто процесс заполнения объекта данными.
Используя JavaScript в качестве примера:
Все, что добавляет ценности,
obj
«увлажняет» это. Я просто используюObject.assign()
в этом примере.Так как термины «сериализация» и «десериализация» были также упомянуты в других ответах, вот примеры, которые помогают устранить неоднозначность значения этих понятий от гидратации:
Сериализация
Deserialize
источник