Объекты JDO не являются простыми обертками вокруг строк базы данных (хотя вы можете реализовать свои объекты JDO в виде простых оберток вокруг строк базы данных, если вы этого хотите).Таким образом, большинство автоматизированных инструментов не будут знать, как объект должен быть представлен, только просматривая базу данных.
Например, такой объект, как:
public class Person {
private List<PhoneNumber> phoneNumbers;
...
public List<PhoneNumber> getPhoneNumbers() {
...
}
}
, может иметь JDO предварительнополучение всех телефонных номеров для непосредственного включения в объект.В реляционной базе данных это, вероятно, будет сделано путем объединения таблицы базы данных PhoneNumber с таблицей базы данных Person при создании объекта Person.
Другие реализации могут выглядеть как
public class PhoneNumber {
public Person getPerson() {
...
}
}
и принудительно использовать пользователяполучить телефонные номера человека в отдельном запросе к базе данных.Просто инструмент общего назначения не может предсказать, какой способ вы хотите использовать.С двумя вариантами (как представлено здесь) довольно легко сказать "сделайте это настраиваемым!"Однако после добавления восьми или более независимых вариантов в комбинации неясно, будет ли проще настроить генерацию класса (в отличие от прямой записи класса).
Не говоря уже о том, что JDO не был 'Он предназначен для генерации классов, на самом деле он был разработан для того, чтобы сделать ваши рукописные классы постоянными без генерации, потому что современные технологии генерации классов оставили много видимых ошибок (нежелательные шаблоны именования, открытые конфликтующие интерфейсы и методы и т. д.).