Сложности хранилища данных в Google App Engine - PullRequest
0 голосов
/ 15 января 2012

Я использую Google App Engine и использую интерфейс хранилища данных Google для базы данных. У меня такой вопрос, у меня есть следующий код: у меня есть сетевой объект, который я хочу либо обновить, если он существует на БД, либо создать, если это первый раз. , Для этого я должен поймать исключение и повторить один и тот же код дважды - он кажется уродливым и излишним и заставляет меня думать, что я делаю что-то не так. Вторая вещь, которая кажется мне странной, - это то, что я не могу придумать метод, который бы копировал объект в сущность или наоборот. Должен ли я реализовать это сам? Очень несложно использовать setProperty или getProperty для каждого свойства и хорошо ... Мне просто интересно, почему нет метода objectToEntity или чего-то в этом роде.

Вот так выглядит мой код ...

try {
Entity network=datastore.get(KeyFactory.stringToKey(networks.get(i)._ipDigits));
//If I get here no exception was thrown - entity already exists on db.
Network contextNet= //fetch the network object from servlet context ...
network.setProperty("ip", contextNet._ip);  //update the fields using setProperty - no better way??
network.setProperty("offlineUsers",contextNet._offlineUsers);
 datastore.put(network);

 }
//Entity doesn't exist , create a new entity and save it (while repeating the same code)...
catch (EntityNotFoundException e) {
Entity network=new Entity("network",Long.parseLong(networks.get(i)._ipDigits));

Network contextNet= // ...fetch the network object from servlet context
 network.setProperty("ip", contextNet._ip);
                        network.setProperty("offlineUsers",contextNet._offlineUsers);
datastore.put(network);


                }

1 Ответ

0 голосов
/ 16 января 2012
  1. Вам не нужно получать и помещать объект, чтобы обновить его.Если вы знаете идентификатор объекта, вы можете просто указать его.Если он существует, он будет обновлен, если нет, он будет создан.

  2. Используйте objectify для автоматического сопоставления ваших классов с сущностями.

...