Уточняющая терминология: «Увлажнение» объекта: выбор свойств из БД - PullRequest
63 голосов
/ 08 февраля 2011

В контексте ORM / Lazy загрузки объектов мое понимание термина «гидратация» выглядит следующим образом:

«Увлажнение» описывает процесс заполнения некоторых или всех ранее не заселенных атрибутов объекта, извлеченных с использованием отложенной загрузки.

Например: класс Author загружается из базы данных:

@Entity
class Author
{
     @Id
     long id;
     List<Book> books;
}

Изначально коллекция books не заполнена.

Насколько я понимаю, процесс загрузки коллекции books из базы данных называется "Увлажнение" коллекции.

Правильно ли это определение, и является ли термин общим местом? Есть ли еще один более распространенный термин, который я должен использовать для этого процесса?

Ответы [ 6 ]

113 голосов
/ 08 февраля 2011

Гидрат начинался как термин для заполнения экземпляра (но пустого) объекта-модели значения из БД (особенно в Hibernate.)

Различные другие ORM и инструменты, такие как BizTalk, используют Hydrate и другую связанную терминологию (например, BizTalk использует термин Dehydrated для обозначения того, что экземпляр доступен, но еще не заполнен).

Лично я против избыточных терминологических пересмотров, заполнено означает то же самое, без переизобретения языка. Это ничего не добавляет и приводит к путанице (обычная первая мысль о том, чтобы встретить заново изобретенные термины: это как-то по-другому и волшебно? ).

Расширение BizTalk этого стиля языка, в частности Обезвоженный является избыточным. Я ожидаю, что люди не забыли, как сказать: пусто или ясно ?

Гидратированный и связанные с ним метафоры по сути являются маркетинговыми инструментами, изобретенными для дифференциации Hibernate от конкурирующих продуктов.

В этот момент Hibernate и другие продукты ORM использовали эти термины в течение многих лет, поэтому Hydrate (и Dehydrate) здесь, чтобы остаться.

7 голосов
/ 09 апреля 2015

В номенклатуре Hibernate, гидратация - это когда ResultSet JDBC преобразуется в массив необработанных значений :

final Object[] values = persister.hydrate(
    rs, id, object,
    rootPersister, cols, eagerPropertyFetch, session
);

Гидратированное состояние сохраняется в текущем запущенном контексте постоянства как EntityEntry объект, который инкапсулировал моментальный снимок объекта во время загрузки.Гидратированное состояние затем используется:

  • механизмом грязной проверки по умолчанию, который сравнивает данные текущего объекта с моментальным снимком времени загрузки
  • кэш второго уровня, чьи записи кэшасоздаются из моментального снимка объекта времени загрузки

Обратная операция называется обезвоживание и копирует состояние объекта в оператор SQL INSERT или UPDATE.

4 голосов
/ 08 февраля 2011

гидратация это свободный термин. В нашей компании мы используем «регидратацию» как термин для загрузки всех свойств объекта целого графа объекта. Вот пост , в котором говорится о различных уровнях гидратации (опять же, это общее использование, хотя они используются в контексте спящего режима).

2 голосов
/ 08 февраля 2011

Я думаю, что термин «гидрат (ы)» в контексте ORM просто означает, что среда дает вам объекты.Таким образом, объекты «гидратируются» ORM после извлечения данных из хранилища.Этот термин может применяться в любое время, когда среда ORM дает вам объект / график, представленный в магазине.

0 голосов
/ 07 февраля 2019

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

  • единственное скалярное
  • массив скаляров
  • массив массивов
  • массив объектов
  • объект, собирающий скаляры
  • массивы для сбора объектов
  • объект, собирающий другие объекты
  • ... подробнее

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

0 голосов
/ 08 февраля 2011

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

замените hibernate на имя по вашему выбору orm

...