Из-за природы моего приложения мне нужно «пространство имен» в хранилище данных.Пространства имен в хранилище данных Google App Engine
Это код, который я вижу в документации:
// Set the namepace temporarily to "abc"
String oldNamespace = NamespaceManager.get();
NamespaceManager.set("abc");
try {
... perform operation using current namespace ...
} finally {
NamespaceManager.set(oldNamespace);
}
Однако, я не уверен, где пространство имена должны быть установлены в XML, прежде чем использовать его, или вы можете создать пространство имен динамически в коде ?
Также я вижу, что существует setNamespace
метод (хотя и не рекомендуется); как насчет DatastoreService
есть ли способ пространства имен данного экземпляра службы, который мы получаем от фабрики DatastoreServiceFactory
, поэтому нам не нужно устанавливать пространство имен обратно и вперед с помощью нашего кода?
Как насчет просачивания пространства имен, вы столкнулись с этим? – xybrek
Нет, я не сталкивался с утечкой пространства имен. Вы должны остерегаться ситуаций, когда вы переключаете пространства имен во время последовательности операций. Документы не совсем понятны о точном моменте, когда новые параметры пространства имен вступают в силу. Как и в: (a) создать запрос (b) перечислить пространства имен (c) запустить запрос. В этом случае пространство имен привязано к запросу, когда оно было создано не при запуске. Но это будет рассматриваться только в том случае, если вы одновременно работаете с параллельными транзакциями, охватывающими несколько пространств имен (что я и делаю). Поэтому безопаснее придерживаться шаблона кода, который вы указали в своем вопросе. – as5wolf