Внутренние компоненты HSQLDB: Hibernate и Integer vs Long Ids - PullRequest
4 голосов
/ 01 апреля 2009

Я создаю сущности базы данных в своем Java-приложении и пытаюсь обосновать использование Integer или Long в качестве типа класса поля «id». В качестве ORM я использую Hibernate, который, в свою очередь, сопоставит это поле со столбцом в базе данных HSQLDB.

Моя борьба такова: Long явно больше и будет обрабатывать большее количество записей - но на очень низком уровне я знаю, что в прошлом (32-битные системы) чтения на уровне ОС имели бы ширину 32 бита. IE: длинное чтение займет два прохода ... это правильное мышление?

Если бы я использовал Long сегодня, мои HSQLDB-запросы выполнялись бы медленнее, чем если бы я использовал Integer?

IE: HSQLDB должен был бы каким-то образом использовать несколько проходов чтения ... или использовать более крупную внутреннюю структуру ... или слишком добавить два столбца целого размера ... или что-то еще, очевидно, неидеальное? Или это как-то спорный вопрос с сегодняшней 64-битной обработкой - которая должна обрабатывать Long в одном чтении (Long - 64 бит)?

1 Ответ

3 голосов
/ 01 апреля 2009

Используйте Лонг. Даже с базой данных в памяти влияние на производительность, скорее всего, не будет значительным по сравнению с остальной частью вашего приложения. Однако, если вы начнете исчерпывать идентификаторы, будет невероятно хлопотно возвращаться и менять приложение позже.

...