小编Piy*_*eli的帖子

使用DTO与序列化实体

在问这个问题之前,我已经阅读了线程,但是这是一个相当老的线程,并且现在有许多用于反序列化实体的新方法。

我的第一个问题是,为什么我们不应该在Controller中使用实体?如果唯一的原因是浪费的数据通过网络传输,那应该不成问题,因为有避免这种情况的方法。

我正在使用flexjson.JSONSerializer来反序列化实体,并使用Gson.fromJSON()来将json序列化为实体,而不是使用DTO。我的控制器代码如下所示。

@RequestMapping (value = "", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public void createStream(@RequestBody String  streamData) {
    StreamEntity streamEntity = null;
    try {
        streamEntity = streamService.createStream(streamData);
        logger.info("Created Stream [id=%s, name=%s]", streamEntity.getId(), streamEntity.getStreamName());
    } catch (Exception e) {
        logger.info("Error occured while creating the stream[name=%s]: %s",streamEntity.getStreamName(), e.getMessage());
    }               
}


@RequestMapping (value = "/{id}", method = RequestMethod.GET)
public String fetchStream(@PathVariable(value = "id")final Long id) {
    StreamEntity streamEntity = streamDAO.getById(id);
    String json = StreamEntitySerializer.serialize(streamEntity);       
    return json;
}
Run Code Online (Sandbox Code Playgroud)

在控制器中使用实体的唯一目的是记录日志。代码有什么错误/令人反感吗?

spring json entity dto

1
推荐指数
1
解决办法
1960
查看次数

标签 统计

dto ×1

entity ×1

json ×1

spring ×1