域模型和静止表示的解耦

时间:2014-10-11 20:14:45

标签: java rest jpa jax-rs

我有一个带有JPA注释的域模型作为我的应用程序的数据结构。现在,让我们假设我们有两个域类,其中包含以下字段+ getter和setter:

Category
- label
- color

Task
- category
- label
- created
- due

可以看出,Task依赖于Category类。现在,我有两个REST资源:/api/categories/api/tasks,带有可选的/{id} URI参数。

现在,当通过REST资源检索或更新Task对象时,我不想发送或接收依赖的Category对象。我宁愿在Task REST对象中拥有引用ID。

{
    "id": 123,
    "category": {"id": 456},
    "label": "Test",
    "created": "2014-01-01T00:00:00",
    "due": "2014-04-05T00:00:00"
}

但是,如果我通过REST资源公开我的核心域模型,那么Jackson也会将Category对象放在Task对象中,这是我不想要的。

所以,我认为拥有一个单独的REST表示模型是个好主意。什么是从REST表示对象解耦然后转换为域对象的最佳方法。我已经想出使用服务然后注入到REST资源类中,但是如何在两个模型之间进行转换?

1 个答案:

答案 0 :(得分:2)

你可以长时间做,也可以使用" automapper"。我已经看过一些,但由于我只在c#中使用了AutoMapper,因此无法推荐。

这个问题涉及有哪些等价物:Automapper for Java