Я пишу Java-приложение на основе базы данных, содержащее модели.
Если классы модели содержат информацию базы данных, эти классы являются наилучшим местом для хранения идентификатора таблицы / представления / коллекции, которую они представляют.
Обычно вы представляете идентификатор непосредственно как int/long
для не составных ключей, в то время как вы обычно хотите представлять составные ключи с определенным классом, таким как:
public class Model {
ModelPk modelPk;
int data;
//getters
}
public class ModelPK {
long idFoo;
long idBar;
//getters
}
Кроме того, как мне создать начальное значение идентификатора?
Для реляционных БД последовательность автоинкремента обычно такая же.
С NoSQL DB, атомарная последовательность возможна, хотя это не стандартный способ (не обязательно масштабируемый и адаптированный к разнесенной модели данных). Другие способы позволяют генерировать уникальные идентификаторы объектов с некоторыми ограничениями, которые могут быть приемлемы в зависимости от конкретного случая (например, это не обязательно серия чисел, а сочетание временных меток и других вещей).
В любом случае вы никогда не захотите генерировать идентификатор самостоятельно , поскольку крайне важно гарантировать его согласованность и уникальность среди потенциально нескольких клиентов из нескольких приложений.