应用层。 api 个模型和内部模型之间的映射
Application layers. Mapping between api models and internal models
我有这样的情况
我有控制器代码
@RestController
public class MyController implements SomeApi {
@Autowired
private final MyService myService ;
public ResponseEntity<AnswerObject> getSomething (RestModelObject obj) {
myService.getSomething(obj);
}
以下服务代码:
@Service
public class MyServiceImpl implements MyService {
@Autowired
private final EntityRepository entityRepository;
public AnswerObject getSomething (RestModelObject obj) {
Entity entity = entityRepository.getSomething(obj);
AnswerObject answerObject = map(entity, new AnswerObject());
return answerObject;
}
}
如我所见,我这里有几层 - 休息层、业务层、持久层(假设我的数据源很少 - 数据库和弹性,每个都有一些存储库 bean)。
正如我们所见,业务层(服务)了解实体,我认为这不是很好。
所以问题是针对这种情况的最佳做法是什么?
映射应该发生在持久层?
或者创建一些额外的层适配器来负责剩余模型到内部数据模型之间的映射,并将其注入服务 bean 是个好主意吗?
感谢任何成熟的例子。
我认为,它可以在控制器级别完成,例如示例 here。如果我错了,请纠正我。
我有这样的情况
我有控制器代码
@RestController
public class MyController implements SomeApi {
@Autowired
private final MyService myService ;
public ResponseEntity<AnswerObject> getSomething (RestModelObject obj) {
myService.getSomething(obj);
}
以下服务代码:
@Service
public class MyServiceImpl implements MyService {
@Autowired
private final EntityRepository entityRepository;
public AnswerObject getSomething (RestModelObject obj) {
Entity entity = entityRepository.getSomething(obj);
AnswerObject answerObject = map(entity, new AnswerObject());
return answerObject;
}
}
如我所见,我这里有几层 - 休息层、业务层、持久层(假设我的数据源很少 - 数据库和弹性,每个都有一些存储库 bean)。
正如我们所见,业务层(服务)了解实体,我认为这不是很好。
所以问题是针对这种情况的最佳做法是什么? 映射应该发生在持久层?
或者创建一些额外的层适配器来负责剩余模型到内部数据模型之间的映射,并将其注入服务 bean 是个好主意吗?
感谢任何成熟的例子。
我认为,它可以在控制器级别完成,例如示例 here。如果我错了,请纠正我。