持久的文本验证器

时间:2013-04-28 14:10:33

标签: java hibernate oop persistence validation

我有一个java应用程序,我可以从下拉列表中选择一个对象(比方说 - 一个计算机名称)然后进行配置。对于下拉列表中的每台计算机,都需要配置不同的配置字段。我的数据库中有一个表,它将配置字段映射到comptuer。每行包含计算机名称,配置字段名称和字段类型。

例如:

computer_name | field_name    | type
=======================================
 test1        | ip            | String
---------------------------------------
 test1        | user name     | String
---------------------------------------
 test2        | manage_port   | Number
---------------------------------------
 test3        | creation_date | Date

当从UI中的下拉框中选择test1时,用户将看到2个文本框,一个用于ip,第二个用于用户名。每个文本框都需要呈现给用户并具有检查正则表达式的验证器。选择test2时,我想验证这确实是一个数字,还有最小值和最大值。对于test3,我需要确保日期格式(再次使用正则表达式)。

数据库是postgres(虽然我猜解决方案应该适用于每个关系数据库)并且我正在使用Spring + Hibernate。

我的想法是为验证器创建一个验证器POJO和一个DB表,它将包含不同列中可能的所有验证。问题是,我觉得拥有空列有点多余。在java中,我想我会做一个由Validator类,RegexValidator类,NumberFormatValidator类等扩展的抽象MinNumberValidator类...但我不知道如何在DB中正确表示它(需要记住它需要映射到配置表中的每个配置行)。

有关更好设计的任何建议吗?

2 个答案:

答案 0 :(得分:2)

Hibernate支持three types of mapping.      每个类层次结构的表,每个子类的表,每个具体类的表

看起来你的案例足够小,可以成为“每个类层次结构的表”。

答案 1 :(得分:1)

如果您没有多个字段,我会使用@Embedded实体。只需将您可能拥有的字段映射到表并使用JPA的@Embedded选项,以保持面向思维对象。