Mel*_*ius 9 java rest hibernate jpa
我有一种情况,我可以发送JPA实体作为休息请求和/或获得JPA实体作为休息响应
@RequestMapping(value = "/products", method = RequestMethod.POST)
public @ResponseBody ProductDetailsResponse createNewProduct(@RequestBody ProductDetails newProduct)
throws Exception {
Run Code Online (Sandbox Code Playgroud)
ProductDetails 是一个实体
@Entity
@Table(name = "product")
public class ProductDetails {
Run Code Online (Sandbox Code Playgroud)
我应该使用它,还是从实体到另一种对象进行某种转换
Sab*_*han 11
没有严格的规则,但是将JPA实体用作DTO(数据传输对象)并不是一个好的做法(非常好的理由及其非常自以为是的观点).
除了DTO在尺寸方面是轻量级实体之外,还有其他优点.
我意识到的一个这样的优点是更轻的版本的关系,例如对于一对多的单向关系,您的子实体也会引用您的父实体,但您可以在DTO中打破该链,以避免大量的JSON转换和无限循环相关问题.
我发现DTO级别的JSON到Object转换(反之亦然)比实体级别更容易,因为实体代表DB图而不是客户业务图.
一个简单的通用实用程序类来进行转换(从DTO到实体,反之亦然)就足够了.您可以使用此处所述的模型映射器API .
我不让实体跨服务层边界,它的所有DTO都在控制器上,我在控制器上进行转换.
关于这个主题的SO有非常有趣的问题,你可以浏览,
我应该将实体转换为Repository对象内的DTO并将其返回到服务层吗?
额外的锅炉板代码是DTO方法的一个缺点.
| 归档时间: |
|
| 查看次数: |
3330 次 |
| 最近记录: |