java hibernate dto_java – 正确使用Entity和DTO在Restful Web服务中...

有很多文章指出使用JPA / hibernate不需要使用DTO

同样在article由SO成员Bohzo我很少需要阅读DTO

甚至在articles中反对暴露实体声明当实体没有任何行为时(当它们是POJO时)不需要具有DTO,如在贫血域模型中那样

假设有一个Entity类

class Department{

List employees //lazily loaded collection

集合中的每个对象都包含另一个延迟加载的集合

class Employee{

List accounts

有一个getDepartment()方法

这是一个宁静的服务用来提供部门的Json信息.

可能的解决方案是

解决方案1)根据hibernate文档打开和关闭每个请求的hibernate会话(这是控制器中最重要的方法是事务性的?)或更好的使用Spring的OpenSessionInViewFilter,根据这个SO post

为什么不能重新打开会话并获取延迟加载的对象而不是抛出异常?有没有办法用JPA / hibernate配置它?

解决方案2)同样在hibernate doc中,另一种方法是进行汇编阶段.它究竟意味着什么?

将getDepartment API分解为DAO的不同API?

解决方案3)使用DTO即使使用DTO,持久层如何知道视图是否需要完全加载的部门.

导致将API分解为getDepartmentOnly()getDepartmentWithEmployees()和其他人说是否获得100%的部门对象或部分对象

一个API分解为许多映射到许多DTO的实体

解决方案4)正如bohzo的文章中的分页视图一样,避免了延迟加载并且有查询来获取有限的结果

请更正解决方案2并解释hibernate文档中的内容?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值