Spring MVC 中是不是需要模型 POJO?

Posted

技术标签:

【中文标题】Spring MVC 中是不是需要模型 POJO?【英文标题】:are Model POJOs required in Spring MVC?Spring MVC 中是否需要模型 POJO? 【发布时间】:2017-12-28 15:54:24 【问题描述】:

我目前正在玩一个带有两个表的 Spring MVC 应用程序。

学生 (id, name) 和 Publications (student_id, journal)。

在我的 GET 请求中,我试图请求给定学生 ID 的所有日志(字符串)。我相信在这种情况下,我可以在我的 DAO 中简单地执行以下操作,而无需使用任何模型:

@Override
public List<String> getAllJournals(String name) 
    String query = "SELECT journal FROM Publications INNER JOIN Student ON "
            + "Publications.student_id = Student.id WHERE Student.name=:name";

    Map<String,Object> params = new HashMap<String,Object>();
    params.put("name", name);
    List<String> journals = jdbcTemplate.queryForList(query, params, String.class);
    return journals;

我应该将 POJO 用于 Publication 类还是 Student 类?这不是多余的吗?

【问题讨论】:

【参考方案1】:

拥有 POJO 是个好主意,因为它们允许您使用它们的属性,而不是像您在此处所做的那样为要使用的每个属性创建一个属性:

List<String> journals = jdbcTemplate.queryForList(query, params, String.class);

即使它看起来是一种“冗余”的东西,使用 POJO 也可以帮助您在代码中重用方面。您可以简单地创建返回所有 Publication 属性的方法。在您的情况下,这是一个非常简单的实体,只有 2 个字段,但如果该实体长大,使用 POJO 可以帮助您实现重用方面。

这是关于advantages of using POJOs 的一个很好的回答。

【讨论】:

在这里,如果我根本不关心 student_ids,最好只调用 Publications 上的 setter,例如 publication.set(journals); return publications; 是的,同意。如果您不关心重用对象属性,您可以根据需要的结果进行查询。

以上是关于Spring MVC 中是不是需要模型 POJO?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式将“@Cascade”添加到 POJO 字段(Spring mvc + Hibernate)

Spring MVC 中创建的模型对象到底在哪里?

java框架5-Spring MVC

Spring MVC POJO入参过程分析

Spring MVC POJO传参方式

Spring MVC体系结构和处理请求控制器