It’s possible to define enumerations in JPA using either
@Enumerated(EnumType.ORDINAL)
or
@Enumerated(EnumType.STRING)
I wonder what are advantages and disadvantages of those two definitions?
I heard that ORDINAL performs better (is faster) than STRING with EclipseLink.
Is that true?
I always go
STRING.Speed is rarely the most important issue – readability and maintainability are more important.
I use
STRINGbecause it’s a lot easier to manually inspect rows from the database, but more importantly, I can do two things, without touching the database, theORDINALcan’t handle:Both of these changes will alter the ordinal values of the enums already in use in the database, thus breaking existing data if you are using
ORDINAL.If you change an enum value (not that common), handling it is simple: