Как GAE / JDO конвертирует сущности в доменные объекты? - PullRequest
1 голос
/ 12 ноября 2010

В реализации JDO App Engine типы объектов сохраняются как «Вид» с сущностью, которая сохраняется в хранилище данных. Когда эти объекты извлекаются из хранилища данных, они автоматически возвращаются (в некотором слое JDO) в качестве исходного типа объекта. Что меня смущает, так это то, что сохраняется только простое имя класса; не полный путь. Так как же JVM загружает правильный класс?

Например, если у меня есть com.project.domain.User и я сохраняю экземпляр этого класса в хранилище данных, для типа сущности определяется только «Пользователь». Когда я использую JDO для возврата этих данных, я получаю com.project.domain.User. Как GAE / JDO узнал, что нужно загружать com.project.domain.User, а не com.project.other.domain.User?

1 Ответ

2 голосов
/ 12 ноября 2010

Ваш провайдер JDO (GAE на самом деле не участвует в этом уравнении) сохраняет внутреннее сопоставление сущностей и таблиц.Иногда это формируется из различных XML-файлов, иногда это формируется с помощью аннотаций (зависит от вашего стиля кодирования).В этой карте имена таблиц фактически сопоставлены с полностью определенными классами.

Если бы вы хранили оба типа объектов User, JDO выдаст вам исключение, поскольку они будут использовать одну и ту же таблицу.Вы бы исправили это, указав другую таблицу (через аннотацию или конфигурацию xml).Эта спецификация вошла бы во внутреннее отображение JDO.Тогда JDO будет знать, как правильно разрешить сущность.

...