Насколько приемлемо перечисление (enum) в POJO классе для базы данных

Мне очень смущает вопрос про внутренние классы, перечисления в POJO объекте.

@Entity
@Data
public class Employee {
    
    @Id
    @GeneratedValue(GenerationType.AUTO)
    private Long id;
    
    private String firstName;
    private String lastName;
    
    private Role role;
    private BigDecimal salary;
    
    public static enum Role {
        ENGINEER, MARKETER
    }
}
  • Будет ли лишнюю память занимать каждый такой POJO объект (экземпляр) в базе данных или вообще?
  • Скажите, пожалуйста, как лучше сделать эту «схему ролей»: в отдельном классе или оставить как есть?

Ответы (1 шт):

Автор решения: kyt3

Насколько я знаю:

  1. enum всегда статика, поэтому static можно убрать.
  2. enum это Singletone на уровне самой JVM.

Соответственно лишнюю память такой подход занимать не будет.

Как видно роли имеются в виду только работники с ролями... Поэтому в таком подходе все норм, но может меня кто-то поправит.

Если у Вас еще будет класс в котором используются такое же перечисление - имеет смысл вынести enum отдельно.

→ Ссылка