我有一个java应用程序,我可以在其中从下拉列表中选择一个对象(比如说-计算机名称),然后配置它。对于下拉列表中的每台计算机,需要配置不同的配置字段。我的数据库中有一个表,它将配置字段映射到计算机。每行包含计算机名称、配置字段名称和字段类型。
例如:
computer_name | field_name | type
=======================================
test1 | ip | String
---------------------------------------
test1 | user name | String
---------------------------------------
test2 | manage_port | Number
---------------------------------------
test3 | creation_date | Date
当从 UI 的下拉框中选择 test1
时,用户将看到 2 个文本框,一个用于 ip,第二个用于用户名。每个文本框都需要呈现给用户,并有一个检查正则表达式的 validator 。当选择 test2 时,我想验证这确实是一个数字以及最小值和最大值。对于 test3
我需要确保日期格式(再次使用正则表达式)。
数据库是 postgres(尽管我猜该解决方案应该适用于每个关系数据库)并且我正在使用 Spring + Hibernate。
我的想法是创建一个 validator POJO 和一个用于 validator 的数据库表,其中将包含不同列中可能的所有验证。问题是,我觉得拥有空列有点多余。在java中,我想我会做一个由RegexValidator
类、NumberFormatValidator
类、MinNumberValidator
类扩展的抽象Validator
类等等...但我不知道如何在数据库中正确表示它(需要记住它需要映射到配置表中的每个配置行)。
对于更好的设计有什么建议吗?
最佳答案
Hibernate 支持 three types of mapping. 每个类层次结构表、每个子类表、每个具体类表
看起来你的案例足够小,可以成为“每个类层次结构的表”。
关于java - 持久化文本 validator ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16263712/