2013-04-23 3 views
1

Из-за природы моего приложения мне нужно «пространство имен» в хранилище данных.Пространства имен в хранилище данных 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, поэтому нам не нужно устанавливать пространство имен обратно и вперед с помощью нашего кода?

ответ

1

Вам не нужно объявлять пространства имен для их использования. Если вы хотите создать приложение с несколькими арендаторами, то пространства имен идеально подходят. В принципе, вам просто нужно установить пространство имен один раз в начале вашего запроса. Этот параметр пространства имен автоматически применяется ко всем вашим вызовам API во время этого запроса. Переключение назад и вперед, как показано в документах, будет необходимо только для доступа к данным, которые поделились всеми арендаторами.

+0

Как насчет просачивания пространства имен, вы столкнулись с этим? – xybrek

+0

Нет, я не сталкивался с утечкой пространства имен. Вы должны остерегаться ситуаций, когда вы переключаете пространства имен во время последовательности операций. Документы не совсем понятны о точном моменте, когда новые параметры пространства имен вступают в силу. Как и в: (a) создать запрос (b) перечислить пространства имен (c) запустить запрос. В этом случае пространство имен привязано к запросу, когда оно было создано не при запуске. Но это будет рассматриваться только в том случае, если вы одновременно работаете с параллельными транзакциями, охватывающими несколько пространств имен (что я и делаю). Поэтому безопаснее придерживаться шаблона кода, который вы указали в своем вопросе. – as5wolf

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