Что лучший подход должен обновить только измененные свойства в NHibernate когда отсоединенная сессия?

Эти пред1980 дней были, конечно, славными днями Xerox PARC. Назад, когда GUI, мышь, лазерный принтер, Интернет и персональный компьютер все создавались. (Видящий, поскольку я слишком молод, чтобы быть живым тогда, и Вы в значительной степени работали над изобретением всех тех, я ничего не могу сказать Вам приблизительно в 1980, что Вы уже не знаете, поэтому давайте идти дальше.)

вещь состоит, тем не менее, в том, что эти пред1980 дней были намного более вибрирующие с точки зрения действительно подрывных новых технологий. Это - способ, которым это с каким-либо новым полем - hwo много меняющих правила игры технологических усовершенствований, Вы видели в железных дорогах за прошлые 100 лет? Сколько Вы видели в лампочках? В печатном станке? Как только что-то зажигает шумиху в правильных кругах, существует взрывчатый период изобретения, сопровождаемого длительным периодом назревания. После этого Вы не собираетесь видеть тот же вид абсолютно радикальных изменений снова, ЕСЛИ основные обстоятельства не изменяются.

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

  • Мобильность - смартфоны приносят вычисление к действительно портативной платформе, которая будет скоро включать услуги на основе определения местоположения и основанные на близости специальные сети. Это - абсолютно новая парадигма, это является потенциально столь меняющим правила игры, как GUI был

  • , WWW (HTTP, HTML и DNS) был уже упомянут и является очевидным дополнением к списку, так как это включает глобальную, недорогую, основную богатую коммуникацию по всему миру - все благодаря вычислительной платформе

  • На интерфейсной стороне, обоих касаниях, мультисенсорный (Jeff Han приходит на ум), и упоминание потребности Wiimote. В настоящее время они - в основном любопытство, но ранние графический интерфейсы пользователя - также.

  • шаблоны разработки ООП - высокоуровневые решения как лучшие практики к тяжелым проблемам. В зависимости от Вашего определения 'вычисления' это может или не может принадлежать в списке, но если Вы считаете ООП как значительный шаг вперед пред1980 (я, конечно, делаю), я думаю, шаблоны разработки и GoF заслуживают упоминания также

  • PageRank Google и алгоритмы MapReduce - я рад заметить, что я не был первым для упоминания их, и серьезно---, где мир будет без принципов их обоих? Я ярко помню то, на что мир был похож перед ними, и достаточно сказать Google действительно ЯВЛЯЕТСЯ моим другом.

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

  • Семантический (естественный язык) поиск / анализ / классификация / перевод... Мы не совсем там все же, но компании как Степенное множество производят впечатление, что мы на грани.

  • На той ноте, интеллектуальный HTMs должен быть в этом списке также. Я - еще один сторонник модели и подхода Jeff Hawkins, и если это будет работать, это будет означать полное переопределение того, что могут сделать компьютеры, что это означает быть человеческим, и куда мир может пойти отсюда. Создание реальной аналитики таким образом (искусственно) было бы быть больше, чем что-нибудь, что человеческий род выполнил прежде.

  • GNU + Linux

  • 3D печать / быстрое прототипирование (и, вовремя, производя)

  • P2P (которые также приводят к VoIP и т.д.)

  • электронные чернила, когда-то технологии назревают немного больше

  • , RFID мог бы принадлежать в списке, но вердикт все еще отсутствует на тот одном

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

  • И наконец, я хочу упомянуть любимый: распределенный интеллект или его другое имя: искусственный искусственный интеллект. Идея соединить огромное количество людей в сети и предоставить им доступ к объединенным умам всех остальных через некоторую форму интерфейса ответа вопроса. Это было сделано неоднократно недавно, с Ответами Yahoo, Асквилл, Amazon Mechanical Turk, и так далее, но в моем уме, те все промахиваются МНОГО... во многом как много реализаций распределенного гипертекста, который появился перед HTML Tim Berners-Lee's или многими поисковыми роботами перед Google. Серьезно - кто-то должен встроить поисковый интерфейс в 'ум улья' для выдувания всех остальных из воды. По моему скромному мнению - это - только вопрос времени.

25
задан Sergey Smelov 7 August 2009 в 07:18
поделиться

2 ответа

Вопрос: почему вы хотите это сделать? Я думаю, что это не большая оптимизация, если вы обновляете только столбцы, которые изменились.

Есть ли у вас триггеры в базе данных?

Если да, вы можете сделать следующее:

  • использовать select-before-update = "true" и dynamic-update = "true" в отображении. Это заставляет NH выполнять запрос перед обновлением и обновлять только в случае его изменения и только те столбцы, которые изменились. Я не уверен, выбирается ли он для каждого обновления или только если он не находится в сеансе.
  • используйте Merge вместо update. Фактически это делает то же самое: он выбирает объект из базы данных, только если он еще не находится в сеансе. Также используйте dynamic-update = "true" . Также существует компромисс: Merge возвращает присоединенный экземпляр, если он уже есть в сеансе. Поэтому вам всегда следует отбрасывать переданный вами экземпляр и работать с экземпляром, который вы перешли из Merge .

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

16
ответ дан 28 November 2019 в 21:52
поделиться

Используйте dynamic-update = "true" в сопоставлении .
Дополнительно для обновления отсоединенного объекта используйте это:

Session.SaveOrUpdateCopy(myObject)
6
ответ дан 28 November 2019 в 21:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: