Java Web 应用程序 sql 结果与对象列表

标签 java mysql jsp model-view-controller dao

我似乎一直被这个问题绊倒。我似乎无法得到接近它的直接答案。

我有一个使用 Java、Tomcat、JSP、MySQL 等的 MVC Web 应用程序。我没有使用框架。我有代表数据库中每个表的模型实体。我正在使用 DAO 来访问数据库。

假设您有一个人、一份工作和一份申请。

在 View 中,您需要将它们关联在一起以生成列表行。

到目前为止,我一直在 DAO 中执行 JOIN,并使用 ResultSupportResultSet 返回一个长 SQL 结果。然后我使用 JSTL forEach 标记在 JSP 中循环遍历它。

我知道这不是最好的方法。

但是,我需要在 DAO 中创建什么来传回每行数据呢?我是否使用 View 中需要的所有字段名称定义一个新对象?这是 DTO 吗?或者我是否将原始对象填充到 HashMap 中并将其传回?

当我询问数据库时,我认为执行联接比执行一堆小查询来返回单个对象更有效。

必须有一个可接受的模式来执行此操作?我宁愿遵循已接受的解决方案。

有人可以给我指出正确的方向吗?

谢谢

最佳答案

如果您只有一个 View ,那么创建一个普通的旧 Java 对象 (POJO) 就可以正常工作。我将创建一个 POJO,其中包含 View 所需的所有字段。然后创建一个集合(例如ArrayList)。 POJO 的集合是您的数据传输对象 (DTO)。

数据库连接的成本很高。因此,您想要打开数据库,获取数据并将其存储在您的 POJO 集合中。然后,您可以关闭数据库连接或返回到池(如果您正在使用数据库连接池)。要点是,不要在保持实时数据库连接的同时尝试创建 html 显示。获取数据,关闭数据库连接(或返回到池),然后执行显示逻辑(即 View )。

是的,您想一次选择所有信息(执行数据库连接)。同样的想法,使用数据库连接,然后尽快关闭它。您想避免多次打开/关闭、打开/关闭等。

希望有帮助。您可能想将问题范围缩小到更具体的范围。人们确实很难回答广泛的架构问题。祝你好运。

关于Java Web 应用程序 sql 结果与对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21868524/

相关文章:

java - 使用 URLClassLoader 时出现 NoClassDefFoundError

php - 阻止表单值两次插入 MySQL 数据库

php - 通过 MySQL 查询插入逗号分隔值

java - 如何将未知列数的 ResultSet 映射到 List 并将其显示在 HTML 表格中?

java - Android SDK跨平台

java - Jackson - 结合@JsonValue 和@JsonSerialize

java - 16-slim、16-jdk-slim、16-ea-slim docker 镜像有什么区别

php - 如何在laravel中为每个用户生成唯一的自动增量值并将其添加到数据库

java - 在文本字段中使用 if/else 吗?

jsp - 如何检查是否按下了按钮(在 jsp 文件中)