2012-01-15 3 views
0

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

Это, как в настоящее время выглядит мой код ...

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); 


       } 

ответ

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

  2. Используйте objectify, чтобы автоматически сопоставлять классы с объектами.

+0

спасибо, петер! –

Смежные вопросы