Google DataStore Неизвестные отношения «один ко многим» - PullRequest
2 голосов
/ 15 июля 2009

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

Например,

Person.java

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Person {
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Long id;

    @Persistent
    private Set<Key> favoriteFoods;

    // ...
}

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

1 Ответ

5 голосов
/ 15 июля 2009

Да.Ключ останется там до тех пор, пока вы его не удалите.Еще один недостаток - вы можете случайно вставить ключ Cat в список собак - ключи сейчас не безопасны.Если вы хотите, чтобы реализация JDO занималась ведением бухгалтерского учета за вас, вам нужно пока использовать собственные отношения.Документы здесь подразумевают, что это может измениться в будущем.Я не достаточно знаком с JDO, чтобы знать, как он обычно обрабатывает неизвестные отношения.Также имейте в виду, что даже собственное отношение "магия" происходит в слое JDO, а не в самом хранилище данных, так что вам может показаться, что одна операция может фактически состоять из нескольких реальных обращений к хранилищу данных (например, ситуация каскадного удаления)1003 *

...