java - 复选框网格代表多对多数据库关系;从网络表单到数据库的最佳方式

标签 java jquery data-structures

我使用的是jquery/jsp/java ejb3.0/sql server。

用户界面要求(一个 jsp 页面)是一个复选框网格,大约 10 行高,最多大约 30 行宽(这各不相同),它代表一个多对多表关系的链接器表。

将从数据库填充复选框(如果链接器表中存在行,则选中复选框)。

然后,用户可以尽可能多次地选中/取消选中其中的一个。提交时,任何更改都应保存到数据库中。 更改将包括删除行(如果未选中)(并且如果选中/之前存在行),以及插入行(如果选中)(并且未选中/之前不存在行)。

我的问题是,实现这个的最佳方法是什么?使用 ajax 使用复选框 onchange 事件更新数据库是不合适的。我希望它是一个提交表单事件。

最佳答案

我会尝试通过退后一步并引入一个简单的 bean 来表示“元数据”(即 300 个左右的真/假值)来简化情况。

实际上,在处理这么多字段时,您可能会使用包含子 bean 的母 bean,这些子 bean 将概念上相关的字段保存在一起。例如:

public class MotherBean {
    private UserSettingBean userSettingBean;
    private UserRelationshipBean userRelationshipBean;
    private UserPreferencesBean userPreferencesBean;
    ...
}

因此,您的“Web 层”成为 MotherBean 的简单 CRUD Controller ;每天都会做的事情。您甚至可以使用类似 Spring Roo 的内容为此搭建脚手架。

然后,当您将该 bean 向下传递到较低层时(此设计中可能有也可能没有传统的“服务”或“业务逻辑”层),您就有了一个 DAO,它将关系元数据转换为实际的多对多关系。考虑到我们正在讨论的领域数量,我再次建议将这项工作委托(delegate)给处理相关链接的子 DAO(因为需要一个更好的术语)。

显然,“get”路径反过来也是一样的。您向 MotherBeanDAO 请求与用户 1234 相关的元数据,它向其委托(delegate) DAO 请求子 Bean,将它们包装起来,并将生成的 MotherBean 一直传递到 Web 前端。

关于java - 复选框网格代表多对多数据库关系;从网络表单到数据库的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3574003/

相关文章:

java - 验证方法体中是否使用了方法参数

java - 空指针异常字符串生成器

jquery - fancybox 工作但不识别 css,即使所有内容都正确链接

javascript - 查找修改后的 CSS/JS 属性

java - 链接数据和 ComboBox 项目的最佳方式

java - Toolkit.getImage() 的正确路径是什么?

Java ANTLR 如何忽略部分规则?忽略子规则后的部分

javascript - 同步 jQuery 动画

java - 在 Java 中,将 longs 映射到对象的最高效(时间、内存)方式是什么?

algorithm - 高效的元组搜索算法