Отдельные объекты в Jdo / Hibernate - для чего они вообще? - PullRequest
2 голосов
/ 20 мая 2009

Может ли кто-нибудь объяснить мне, в чем преимущество использования отдельных объектов в контексте веб-приложения? AFAIK они полезны только в том случае, если объекты каким-то образом переживают «лексическую» область транзакции, но обычно в веб-приложении, когда ваша транзакция завершена, вы просто отправляете свои объекты в слой представления, и они не будут повторно присоединены.

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

Любой пример кода приветствуется.

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

Ответы [ 2 ]

1 голос
/ 20 мая 2009

Отдельный объект может также содержать свой номер версии (если у вас есть столбец версий). Если вы используете подход к редактору сущностей, например, загрузить сущность и сохранить ее в http-сессии (или другом долговременном хранилище), а затем обновить и объединить ее в другой сеанс при более позднем взаимодействии. тогда Hibernate может автоматически проверить, что объект (или другие объекты в вашем графе объединенных объектов) не был изменен одновременно.

0 голосов
/ 20 мая 2009

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

...