【发布时间】:2018-04-28 19:57:59
【问题描述】:
最近我开始思考@Transactional 以及它的工作原理和性能,并且我有一个使用spring 事务的项目,所以我有这样的代码:
@Transactional
public PageableProductsDTO getUsersProducts(String userName, Pageable page) {
PageRequest pageRequest = PageRequest.of(page.getPageNumber(), page.getPageSize(), Sort.Direction.DESC, "createdAt");
Page<Product> pagebelProductsByUser = productRepository.findProductsByUser(userService.getUser(userName), pageRequest);
Page<ProductDetailsDto> productDtos = pagebelProductsByUser.map(source -> {
ProductDetails productDetails = source.getProductDetails();
return new ProductDetailsDto(productDetails.getBarcode(), productDetails.getName(), productDetails.getPrice());
});
return new PageableProductsDTO(productDtos);
}
如您所见,在上面的方法中,我从db中获取产品,然后将产品映射到PageableProductsDTO,我怀疑我是否做对了,因为可能dto映射应该是在控制器层完成?而且似乎在服务层做这样的映射会延长事务本身花费的时间,我的意思是从性能的角度来看可能不是很好?
【问题讨论】:
标签: java spring spring-transactions dto