Я предпочитаю использовать Ordinal
, но на самом деле зависит от использования .
Например:
У вас есть перечисление, чтобы сохранить все ваши пользовательские состояния, в этом случае порядок не имеет значения, и вы можете добавить больше состояний в будущем (Лучшее использование -@Enumerated(EnumType.ORDINAL)
):
public enum UserStates { ACTIVE, DELETED, PENDING }
Но теперь у вас есть перечисление, чтобы спасти Планеты в Солнечной системе (Лучшее использование @Enumerated(EnumType.STRING)
):
public enum Planets {MERCURY,VENUS,EARTH,MARS,JUPITER,SATURN,URANUS,NEPTUNE,PLUTO,NINE}
Теперь подумайте, чтовы хотите изменить порядок своих планет, с @Enumerated(EnumType.ORDINAL)
вы не можете, потому что ваша база данных не может знать новый порядок в вашем файле Java.
Вы можете изменить порядок своих Планет, используя @Enumerated(EnumType.STRING)
, потому что ваша Планета связана с именем перечисления, а не с порядком перечисления.
В любом случае, вы можете изменить свои @Enumerated(EnumType.STRING)
перечисления, потому что они связаны с порядком, но вы не можете изменить свои @Enumerated(EnumType.STRING)
перечисления, потому что они будут использовать как новые перечисления.
Stringтипы более читабельны в базе данных, но будут иметь больший размер, чем порядковые данные.Может быть полезно, если база данных используется большим количеством клиентов, но лучше иметь хорошую документацию по программному обеспечению, чем сохранять 1000 раз «ЗЕМЛЯ», чем «4»
USERSTATE
------------
ID | STATE |
------------
1 | 1
2 | 2
3 | 1
Planets
------------
ID | Name |
------------
1 | EARTH
2 | EARTH
3 | MARS
4 | EARTH