3

JavaEE プロジェクトを作成しましたが、ユーザーの性別を MySQL に保存する必要があります。そして、新しいユーザー アカウントを追加するときにこのプロパティを表示したいと考えています。例えば

<select name="gender">
    <option value="0">Male</option>
    <option value="1">Female</option>
</select>

これで、このプロパティを MySQL に保存する 2 つの方法が見つかりました。

  1. 整数/文字を使用して性別列を保存します:

    gender tinyint(1) not null;
    

    この場合、これらを Java コードに記述する必要があります。

    public class StaticData {
        public static final short MALE = 0;
        public static final short FEMALE = 1;
    }
    

    もしそうなら、私のデータベースは Java コードに依存して値の範囲を制限し、0/1 が何を表すかを説明します (低レベルは高レベルに依存します)。それは良い考えではないと思います。

  2. 列挙型を使用して性別列を保存します。

    gender enum("MALE", "FEMALE") not null
    

    この場合、私の Java コードは列挙型の値に依存します。これらの値を取得するには、次の 2 つの方法があります。

    1) public enum Gender { MALE, FEMALE }、方法1とほぼ同じ問題です。

    2) 「SHOW COLUMNS FROM user LIKE \"gender\"」などの値を MySQL から取得し、正規表現を使用して文字列を分割します。しかし、これは冗長な方法です。JSPをロードするたびにdbからクエリを実行する必要があります。高くつくと思います。

これに共通のイディオムはありますか?そうでない場合、プロジェクトに適したソリューションを選択する際に考慮すべき要素は何ですか?

4

2 に答える 2

1

IDをキーとして「性別」テーブルを作成し、テキストをユーザーに表示する必要があります。

  • ID - テキスト
  • 1 - 男性
  • 2 - 女性

Person では、性別 ID を外部キーとして保存します。

参加した人に見せたい場合は、その人に性別を参加させ、テキストを印刷できます。選択コントロールでは、性別テーブルのすべての行を選択し、行を含む html を生成します。

サポートする新しい性別がある場合は、それをデータベースに追加するだけで、Java コードを編集する必要はありません...

于 2012-10-31T08:50:58.420 に答える