Уточнение терминологии: "увлажнение" сущности: извлечение свойств из БД
в контексте ORM / ленивой загрузки сущностей мое понимание термина "гидратация" выглядит следующим образом:
"гидратация" описывает процесс заполнения некоторых или всех ранее не заполненных атрибутов объекта, полученного с помощью отложенной загрузки.
например: класс Author
загружена из базы данных:
@Entity
class Author
{
@Id
long id;
List<Book> books;
}
изначально books
коллекция не заполняется.
это мое понимание, что процесс загрузки books
коллекция из базы данных называется "увлажнение" коллекции.
правильно ли это определение, и является ли термин общим местом? Есть еще более общий термин, который я должен использовать для этого процесса?
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 выбора