Если вы перейдете к localhost: 4321 / _ah / admin, вы можете воспользоваться средством просмотра хранилища данных sdk, где вы увидите, что у каждого типа сущностей есть поле KEY и поле NAME / ID;
Независимо от того, используете ли вы long, String или Key в качестве @PrimaryKey, будет столбец ID / Name со строкой / номером и столбец KEY с закодированным ключом для указанного идентификатора. Как упоминалось в других статьях, эта кодировка хэширует {md5s, скорее всего}, идентификатор приложения appspot, полное имя класса объекта данных и все, что вы указываете как @ PrimaryKey.
Единственный раз, когда вам понадобится прямой доступ к этому полю, это если вам абсолютно все равно, как называются данные, {когда вам нужна ваша программа, чтобы найти их, но люди не будут искать их, угадывая слова в текстовое поле}, или когда вы ХОТИТЕ иметь несколько объектов одного типа и имени {возможно, с использованием версии int?}, вам следует использовать синтаксис закодированного ключа. И KEY, и ID присутствуют в БД, независимо от того, помещаете ли вы поле в свой класс. Использование синтаксиса закодированного ключа просто дает вам доступ к этому значению.
Кроме того, существует доступный бонус скорости для приложений, использующих закодированные ключи ... Существует только два типа запросов: SELECT * и SELECT _ _ key _ _ {пробелы, используемые для отображения двух _}. Для больших наборов данных в приложениях AJAX единственный эффективный способ разбивки данных на страницы состоит в том, чтобы выбрать все ключи, отправить их клиенту и попросить клиента запросить 0-> X записей, создать ссылки для других X-> Результаты Y и запросить сервер с первым набором закодированных ключей для получения полных данных, проанализировать ответ в симпатичные маленькие списки и избежать загрузки 397 объектов данных сервера, которые не являются полезными сразу.
Передача закодированных ключей вверх и вниз по проводам может занять немного большую полосу пропускания, чем не закодированные ключи {если только вы не так долго называетесь, как я!}; но он сокращает эти циклы ЦП на appengine, делает ваши квоты более счастливыми, а все приложения работают на долю чуть быстрее!
Этот ключ, даже если он каким-то образом не хэширован, будет отображать данные, настолько же чувствительные, как и все, что вы делаете с помощью PrimaryKey. Ваш пароль приложения не задействован, равно как и пароли пользователей в любой разумной модели данных. Единственная вещь, которая может {BIG может} утечь}, это адрес электронной почты пользователя, если вы используете предоставленный класс User для аутентификации, или имена классов, которые вы используете в своем источнике.
... По сути, может быть раскрыта только информация, уже имеющаяся в просмотре или запросе двух человек: