Я использую 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);
}