JPA Enum ORDINAL vs STRING 質問する

JPA Enum ORDINAL vs STRING 質問する

JPAでは、次のいずれかを使用して列挙を定義することができます。

@Enumerated(EnumType.ORDINAL)

または

@Enumerated(EnumType.STRING)

これら 2 つの定義の利点と欠点は何でしょうか?

EclipseLink では、ORDINAL の方が STRING よりもパフォーマンスが良い (高速) と聞きました。
本当ですか?

ベストアンサー1

私はいつも行きますSTRING

スピードはめったに最も重要な問題ではありません。読みやすさと保守性が重要です。もっと重要。

私がこれを使用するのSTRINGは、データベースの行を手動で検査する方がはるかに簡単だからですが、さらに重要なのは、データベースに触れることなく、では処理ORDINALできない次の 2 つの操作を実行できることです。

  1. 私は変えることができます注文私の列挙体の
  2. できます入れる列挙型リストの途中に新しい列挙型を追加する

これらの変更は両方とも、データベースで既に使用されている列挙型の序数値を変更するため、 を使用している場合は既存のデータが壊れてしまいますORDINAL

列挙値を変更する場合 (それほど一般的ではありませんが)、処理は簡単です。

UPDATE table SET enum_column = 'NEW_ENUM_NAME' where enum_column = 'OLD_ENUM_NAME';

おすすめ記事