【发布时间】:2020-07-08 17:57:36
【问题描述】:
在我的应用程序中,我使用 DTO。我目前的伪代码解决方案是这样的 - 效果很好:
ResponseEntity<EntityDTO> RestController.get(String uuid){
EntityDTO dto = Service.get(uuid) {
Entity entity = Repository.loadEntity(id);
return EntityDTO.from(entity);
}
return ResponseEntity<EntityDTO>( dto , HttpStatus.OK);
}
最近看到了另一种解决方案,没有在服务层进行转换步骤。
例如你的实体看起来像这样 :
@Entity
public class Book {
Long id;
String title;
String text;
.....
}
而且文本太“重”,无法与通常会像这样创建 DTO 的漏洞书一起发送:
public class SlimBookDTO {,
static SlimBookDTO from(Book book) {
return new SlimBookDTO(book.id, book.title);
}
Long id;
String title;
.....
}
“新”(对我来说)解决方案是只创建一个这样的界面:
public interface SlimBookDTO {
Long getId();
String getTitle();
}
您的 BookRepository 获得了一个新方法:
@Repository
public interface BookRepository extends JpaRepository<Book , Long> {
List<SlimBookDTO> findAllByTitle(String title);
}
使用这种方法,我不再需要服务层来处理直接请求。这很常见吗?有人有这方面的经验吗?它有一些我在小型应用程序中看不到但在更大范围内会面临的缺点吗?
【问题讨论】:
标签: java spring spring-boot dto