Я новичок в JDO, но я хочу использовать его, чтобы сделать мой код переносимым (сейчас я использую AppEngine, вот почему).В следующем Google Talk: http://dl.google.com/io/2009/pres/W_0415_Building_Scalable_Complex_App_Engines.pdf, Бретт Слаткин продемонстрировал новый эффективный шаблон для извлечения родительских объектов с использованием дочерних ключей [слайды 23–25].В его примере у него не было сопоставления родительских и дочерних отношений для классов в Python.Я не знаю, как работает Python, но я предполагаю, что в JDO вам нужно где-то указать родителя.Итак, для следующего кода, как я могу сопоставить MessageIndex как дочерний элемент с Message:
// Message.java
@PersistenceCapable
public class Message {
@PrimaryKey
@Persistent(valueStrategy=IdGeneratorStrategy.IDENTITY)
Long id;
@Persistent String sender;
@Persistent Text body;
}
// MessageIndex.java
public class MessageIndex {
@PrimaryKey
@Persistent(valueStrategy=IdGeneratorStrategy.IDENTITY)
Long id;
@Persistent List<String> receivers;
}
// Query.java - Query Example
Query query = pm.newQuery("select id from MessageIndex" +
"where receivers == NameParam " +
"parameters String NameParam");
List<Key> indexes = (List<Key>) query.execute("Smith"); // List the child keys here
List<Key> keys = new List<Key>; // A place to store parent keys
for (Key k : indexes)
{
keys.add(k.getParent()); // Here, how would getParent() know who it's parent is?
}
List <Message> messages = new List <Message>
for (Key k : keys)
{
messages.add(pm.getObjectById(Message.class, k));
}
Итак, как я могу сопоставить родительско-дочерние отношения между Message и MessageIndex в этом примере?Правильно ли я преобразовал код Python?
Любые комментарии / предложения приветствуются!
PS Ссылка на видео находится здесь: http://www.google.com/events/io/2009/sessions/BuildingScalableComplexApps.html -> очень интересно!
Спасибо.