Хорошие примеры с открытым исходным кодом использования групп объекта в Механизме Приложения? [закрытый]

target = '_ parent'

Используя идею Кевина Веллы, я попытался добавить этот атрибут к элементам формы, созданным генератором кнопок PayPal. У меня получилось так, что Paypal не открывается в новом окне / вкладке браузера.

21
задан e70 31 August 2009 в 21:32
поделиться

3 ответа

Основное использование групп сущностей - предоставить средства для обновления более чем одной сущности в транзакции.

Если вам не приходилось их использовать, считайте свои благословения. Либо вы проектируете свои модели данных таким образом, что никакие две сущности никогда не нужно обновлять одновременно, чтобы оставаться согласованными, либо они вам действительно нужны, но вам повезло: )

Представьте, что у меня есть тип сущности Invoice и тип сущности LineItem. С одним счетом может быть связано несколько элементов LineItem. Сущность My Invoice имеет поле LastUpdated. Каждый раз, когда LineItem добавляется в мой Invoice, я хочу сохранить текущую дату в поле LastUpdated.

Моя функция обновления может выглядеть так (псевдокод)

invoice.lastUpdated = now()
lineitem = new lineitem()

invoice.put()
lineitem.put()

Что произойдет, если invoice put () завершится успешно и lineitem put () не работает? Дата моего счета-фактуры покажет, что что-то было обновлено, но фактического обновления (нового LineItem) там не было. Решение состоит в том, чтобы поместить оба метода put () в транзакцию.

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

ИЗМЕНИТЬ, ЧТОБЫ ОТВЕТИТЬ НА КОММЕНТАРИИ ПЛАКАТА

Ах. Думаю, я понимаю ваше замешательство. Вышеупомянутые параграфы устанавливают, почему транзакции важны. Но вы говорите, что вам все еще безразличны группы сущностей, потому что вы не понимаете, как они связаны с транзакциями. Но если вы используете db.run-in-transaction, то вы используете группы сущностей, возможно, даже не осознавая этого! Каждая транзакция включает одну и только одну группу сущностей, и любая данная транзакция может влиять только на сущности, принадлежащие к той же группе. см. здесь

«Все операции с хранилищем данных в

РЕДАКТИРОВАТЬ ОТВЕТ НА КОММЕНТАРИИ ПОСТЕРА

Ах. Думаю, я понимаю ваше замешательство. Вышеупомянутые параграфы устанавливают, почему транзакции важны. Но вы говорите, что вам все еще безразличны группы сущностей, потому что вы не понимаете, как они связаны с транзакциями. Но если вы используете db.run-in-transaction, то вы используете группы сущностей, возможно, даже не осознавая этого! Каждая транзакция включает одну и только одну группу сущностей, и любая данная транзакция может влиять только на сущности, принадлежащие к той же группе. см. здесь

«Все операции с хранилищем данных в

РЕДАКТИРОВАТЬ ОТВЕТ НА КОММЕНТАРИИ ПОСТЕРА

Ах. Думаю, я понимаю ваше замешательство. Вышеупомянутые параграфы устанавливают, почему транзакции важны. Но вы говорите, что вам все еще безразличны группы сущностей, потому что вы не понимаете, как они связаны с транзакциями. Но если вы используете db.run-in-transaction, то вы используете группы сущностей, возможно, даже не осознавая этого! Каждая транзакция включает одну и только одну группу сущностей, и любая данная транзакция может влиять только на сущности, принадлежащие к той же группе. см. здесь

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

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

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

Какие вещи вы делаете в своих транзакциях? Есть много веских причин использовать транзакции только с одной сущностью, которая по умолчанию находится в своей собственной группе сущностей. Но иногда вам нужно синхронизировать 2 или более объекта, как в моем примере выше. Если объекты Invoice и LineItem не находятся в одной группе объектов, вы не сможете обернуть их модификации в вызове db.run-in-transaction. Итак каждый раз, когда вы хотите оперировать двумя или более объектами транзакционно, вам нужно сначала убедиться, что они находятся в одной группе. Надеюсь, это прояснит, почему они полезны.

22
ответ дан 29 November 2019 в 21:41
поделиться

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

  1. Получение маркеров покупателя происходит намного быстрее, поскольку они физически хранятся вместе с объектом покупателя (на том же сервере, возможно, на том же диске).

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

2
ответ дан 29 November 2019 в 21:41
поделиться

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

1
ответ дан 29 November 2019 в 21:41
поделиться
Другие вопросы по тегам:

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