Я читаю документы по генерации ключей в движке приложения. Я не уверен, какой эффект имеет использование простого ключа String над реальным ключом. Например, когда мои пользователи регистрируются, они должны предоставить уникальное имя пользователя:
class User {
/** Key type = unencoded string. */
@PrimaryKey
private String name;
}
Теперь, если я правильно понимаю документы, я все равно смогу сгенерировать именованные ключи и группы сущностей, используя это, верно?
// Find an instance of this entity:
User user = pm.findObjectById(User.class, "myusername");
// Create a new obj and put it in same entity group:
Key key = new KeyFactory.Builder(
User.class.getSimpleName(), "myusername")
.addChild(Goat.class.getSimpleName(), "baa").getKey();
Goat goat = new Goat();
goat.setKey(key);
pm.makePersistent(goat);
экземпляр Goat теперь должен находиться в той же группе сущностей, что и этот пользователь, верно? Я имею в виду, что нет проблем с тем, чтобы оставить первичный ключ пользователя как просто строку?
Есть ли выигрыш в производительности при использовании ключа? Должен ли я обновить до:
class User {
/** Key type = unencoded string. */
@PrimaryKey
private Key key;
}
// Generate like:
Key key = KeyFactory.createKey(
User.class.getSimpleName(),
"myusername");
user.setKey(key);
это почти то же самое, я все равно просто генерировал бы Ключ, используя уникальное имя пользователя,
Спасибо