如何在动态表单上完成CRUD操作?

时间:2012-11-15 20:03:24

标签: java jsf jpa

我已按照Balusc's 1st method从数据库中定义的字段创建动态表单。 我可以获取已发布字段的字段名称和值。 但我对如何将值保存到数据库感到困惑。

  • 我应该在创建表单后预先创建一个表来保存值 手动保存值(通过手动形成SQL查询)?
  • 我应该将名称/值对转换为JSON对象 并保存?
  • 我应该创建一个包含id,name,value字段和的简单表 在这里保存名称/值对(如EAV Scheme)?

或者有没有办法将发布的值保存到数据库中? 此致

1 个答案:

答案 0 :(得分:2)

看起来你正试图自下而上而不是自上而下。

链接答案中的动态表单旨在在所有现有表中重用,而无需在每个表的“硬编码”Facelets文件上手动创建单独的JSF CRUD表单。您应该已经拥有一个通用模型,其中包含有关特定数据库表中所有可用列的信息(链接答案中为Field)。这些信息可以通过JPA元数据信息(如何依赖于所使用的JPA提供程序)动态地和一般地提取,或者在应用程序启动期间通过良好的'ol JDBC ResultSetMetaData类提取一次。

如果你真的需要自下而上的工作,那就更难了。在运行时创建表/列是一个非常糟糕的设计(除非您打算开发某种类型的DB管理工具,如PhpMyAdmin,当然)。无需创建表/列运行时,基本上应该有3个表:

  • 1表,其中包含有关哪些“虚拟”DB表全部可用的信息。
  • 1表,其中包含一个这样的“虚拟”数据库表的列的信息。
  • 1表,其中包含一个此类列的值的信息。

然后你应该通过FK关系将它们链接在一起。