0

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

例如:

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

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

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

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

对更好的设计有什么建议吗?

4

2 回答 2

2

Hibernate 支持三种类型的映射。 每个类层次结构表,每个子类表,每个具体类表

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

于 2013-04-28T14:25:12.947 回答
1

@Embedded如果你没有很多字段,我会用一个实体来做。只需映射您可能必须表的字段并使用 JPA 的 @Embedded 选项以保持面向对象的思考。

于 2013-06-26T22:02:46.910 回答