RJo*_*RJo 6 data-transfer-objects spring-data-jpa spring-data-rest
我们有两个具有客户端 - 服务器架构的Spring Boot应用程序.后端配置了Spring Data REST + JPA.前端应该消耗后端公开的资源并提供公共REST API.
是否可以通过声明例如mapper bean使Spring数据自动从DTO映射到域对象?
// JPA persistable
@Entity
public class Order { .. }
// Immutable DTO
public class OrderDto { .. }
// Is this somehow possible..
@RepositoryRestResource
public interface OrderDtoRepository extends CrudRepository<OrderDto, Long> {}
// .. instead of this?
@RepositoryRestResource
public interface OrderRepository extends CrudRepository<Order, Long> {}
Run Code Online (Sandbox Code Playgroud)
我们可以利用 Spring Data REST 中的投影功能(从 2.2.x 开始提供)。像下面这样:
import org.springframework.data.rest.core.config.Projection;
@Projection(name = "orderDTO", types = Order.class)
public interface OrderDTO {
//get attributes required for DTO
String getOrderName();
}
@RepositoryRestResource(excerptProjection = OrderDTO.class)
public interface OrderRepository extends CrudRepository<Order, Long> {
}
Run Code Online (Sandbox Code Playgroud)
调用 REST 时,将“projection”参数设置为“orderDTO”,即
http://host/app/order?projection=orderDTO
Run Code Online (Sandbox Code Playgroud)
请参考:
笔记:
| 归档时间: |
|
| 查看次数: |
5199 次 |
| 最近记录: |