Уточнение терминологии: "увлажнение" сущности: извлечение свойств из БД


в контексте ORM / ленивой загрузки сущностей мое понимание термина "гидратация" выглядит следующим образом:

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

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

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

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

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

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

5 56

5 ответов:

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

различные другие ORMs и инструменты, такие как BizTalk, используют Гидрат и другую связанную терминологию (например, BizTalk использует термин обезвоженный, чтобы означать, что экземпляр доступен, но еще не заполнен.)

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

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

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

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

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

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

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

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

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

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

обратная операция называется дегидратация и он копирует состояние сущности в инструкцию SQL INSERT или UPDATE.

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

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

заменить hibernate с именем вашего orm выбора