使用数据库@Entity类进行REST曝光?

时间:2015-07-15 18:46:41

标签: java spring rest

@Entity
class MyEntity {
   //some properties to be explosed to REST, some not
}

我想要使用REST通过spring探索一些数据库类。

建议为每个数据库类创建一个DTO,复制需要公开的所有属性。

因为肯定某些字段如id永远不能通过休息获得。但是这些字段可能会相应地注释,因此在REST提供期间会被忽略吗?

如果他们只是作为普通数据容器来获取从数据库复制的字段,那么今天是否仍然建议编写DTO?

1 个答案:

答案 0 :(得分:3)

在决定时我能想到的一些观点:

参数反对持久性的常见模型&网络服务

  1. 在许多应用程序中,编写其余服务是为了为您提供一个完全构造的对象&实际上并不是数据的标准化视图。例如,您的休息服务可能会返回一个带有Department对象的Employee对象,而您的db模型只有一个deparment id
  2. 1个模型中的修改不会影响另一个模型。例如,您决定将持久性模型中的String更改为整数,您可以将其保留为休息服务中的字符串
  3. 您可能在其余模型中有属性,这些属性在持久性模型上没有任何意义,反之亦然
  4. 如果您要分发模型jar(如客户端API),那么最终可能会依赖于您的客户端可能不需要/支持的持久性框架。
  5. 参数支持持久性的常见模型&网络服务

    1. 避免为每次互动复制/克隆数据
    2. 在1个模型中添加属性而在其他模型中忘记属性时,避免重复维护或可能出现的问题
    3. 根据我的经验,如果您专门创建服务以供自己的应用程序(如UI)使用并严格控制这些服务,那么您可能会使用通用模型

      然而,如果其余的API旨在更广泛地使用和延长寿命,我将使用单独的模型。您可以使用spring的beanutils来简化模型从一种格式到另一种格式的转换。请参见示例here