В компании, в которой я работаю, мы обсуждаем это основное обсуждение того, следует ли лучше использовать классы упаковки для примитивов (java.lang.Integer, java.lang.Long) или использовать примитивные типы непосредственно в POJO, которые отображают объекты в таблицы в спящем режиме.
Идея состоит в том, что мы хотим, чтобы эти значения не были нулевыми в базе данных.
Аргументы в пользу использования примитивов:
- Обработка этих значений как int означает, что они никогда не могут быть нулевыми, в этот способ делает невозможным непреднамеренное получение нулевой ссылки на поле.
- int = 32/64 бит памяти. Integer = 16 байт памяти и также медленнее
Аргументы в пользу использования объектов-оболочек:
- Мы можем добавить ограничение на уровне базы данных, чтобы всегда предотвращать значения от получения там
- Мы можем в итоге ввести вводящие в заблуждение данные, мы можем имеют 0 вместо нулей в базе данных всякий раз, когда пользователь не делает установить значение, а данные с ошибкой - сложный улов.
- Объекты обладают большей выразительностью, чем примитивы. У нас есть нулевые значения, а также целочисленные значения, поэтому мы можем упростить их проверку, используя аннотации для пример (javax.validation.constraints.NotNull).