2013-04-28 55 views
0

我有一个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和数据库表,验证器将包含所有可能在不同列中进行的验证。问题是,我觉得有空列有点多余。在java中,我想我会做一个抽象的Validator类,它扩展了RegexValidator类,NumberFormatValidator类,MinNumberValidator类,但是我不知道如何在数据库中正确表示它(需要记住它需要是映射到配置表中的每个配置行)。

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

回答

1

如果你没有很多字段,我会用@Embedded实体来做。只需映射可能需要表的字段并使用JPA的@Embedded选项,以便保持以对象为导向。

2

Hibernate支持每个类层次结构,每个子类表,表中每个具体类

three types of mapping. 表看起来像你的情况下,小到足以“表每类层次结构”。

+0

展望未来。将更新它如何去。谢谢! – Avi 2013-04-28 14:31:26