Java SpringJDBC模板的实体或DTO方法?
我有一个Java批处理作业,它使用普通JDBC执行大量查询和大量连接。我决定将普通的JDBC代码转换为使用JDBCTemplate的SpringJDBC项目。 它纯粹是一个命令行批处理程序,没有GUI。大约有40个表,4-5个表有300多个列。我不确定是为这些表创建实体类还是创建DTO pojo类 我理解DTO类是为了解耦实体类和视图。由于我没有GUI,而且我只处理带有大量连接的手工查询的DB,所以只使用实体类而不是DTO类是否更好?我没有使用JPA,而是使用SpringJDBC 所以代码看起来像Java SpringJDBC模板的实体或DTO方法?,java,spring,spring-jdbc,Java,Spring,Spring Jdbc,我有一个Java批处理作业,它使用普通JDBC执行大量查询和大量连接。我决定将普通的JDBC代码转换为使用JDBCTemplate的SpringJDBC项目。 它纯粹是一个命令行批处理程序,没有GUI。大约有40个表,4-5个表有300多个列。我不确定是为这些表创建实体类还是创建DTO pojo类 我理解DTO类是为了解耦实体类和视图。由于我没有GUI,而且我只处理带有大量连接的手工查询的DB,所以只使用实体类而不是DTO类是否更好?我没有使用JPA,而是使用SpringJDBC 所以代码看起来
List<Customer> customers = jdbcTemplate.query(
sql,
new BeanPropertyRowMapper(Customer.class));
这里的客户应该是实体类还是DTO?请告知。传统方法是: 在@Repository级别使用CustomerEntity 在@Service level上使用CustomerDto 在您的情况下,我更愿意使用: CustomerEntity-如果它对应于CUSTOMERS表行。CustomerEntity可以有关系,例如List 对于聚合数据,选择具有多个联接的查询可以使用CustomerReportDto,也可以仅使用CustomerReport 端点响应的CustomerResponse
我建议两者都用 使用实体进行数据库操作,如插入、更新等 使用DTO将数据从RESTAPI传递到服务或服务到RESTAPI。 为此,您需要在服务级别使用DTO到实体和实体到DTO的转换器。
有时,从前端或REST API,我们将获得一些额外的信息,这些信息可能需要一些计算,但不需要DB,因此在这种情况下,最好使用DTO和实体。如果您希望在对象模型上工作,而不是在数据库上工作,但如果您不需要在对象模型上工作,则实体是表示数据库结构的一种很好的方法需要查询结果结构的类。不管您称它为实体还是dto。我假设即使对于相同的表,查询也不会返回相同的结构,因此需要更接近传统dto方法的方法。顺便说一句,如果SQL是只读选择的,那么即使使用JPA/Hibernate,也可以直接查询dto。任何关于如何在spring boot JDBC模板和REST API中使用dto的示例代码他都没有REST API。他仍然可以使用。不必使用GUI或REST。某种情况下,他可以使用服务。当然,他可以如果有意义,就使用它们。然而,当他写自己有命令行批处理作业时,写一个与RESTAPI相关的答案就没有什么意义了。@Sanjay。。这是一个独立的命令行批处理作业,它将命中数据库并生成报告。它不公开任何服务或API。您能具体说明一下为什么我必须在我的案例中使用DTO..CustomerReport作为查看对象类吗?假设我有一个select查询,其中包含来自不同表的多个联接,那么在这种情况下,我可以有一个视图对象类或dto?@Stunner Yes。这有点像风景。因此,您可以使用CustomerReport。您可以将其视为没有DTO后缀的DTO。