我已经建立了一个 JavaEE 项目,需要在 MySQL 中存储用户的性别。我想在添加新用户帐户时显示此属性。例如
<select name="gender">
<option value="0">Male</option>
<option value="1">Female</option>
</select>
现在我找到了 2 种方法来将此属性存储在 MySQL 中。
使用整数/字符存储性别列:
gender tinyint(1) not null;
在这种情况下,我必须在我的 Java 代码中编写这些:
public class StaticData { public static final short MALE = 0; public static final short FEMALE = 1; }
如果是这样,我的数据库将依赖我的 Java 代码来限制值范围并解释 0/1 代表什么(低级别取决于高级别)。我认为这不是一个好主意。
使用枚举存储性别列:
gender enum("MALE", "FEMALE") not null
在这种情况下,我的 Java 代码将取决于枚举的值。有两种方法可以获取这些值:
1) public enum Gender { MALE, FEMALE },这与方法1几乎相同的问题。
2) 从 MySQL 中检索这些值,例如 "SHOW COLUMNS FROM user LIKE \"gender\"" ,然后使用正则表达式拆分字符串。但这是一种冗长的方法。每次加载 JSP 时都必须从 db 查询。我想会很贵。
这有一个通用的成语吗?如果不是,在为我的项目选择合适的解决方案时,我需要考虑哪些因素?