2012-09-04 89 views
3

我有一个JAX-RS服务(我使用泽西岛),现在我必须做客户端。我想知道你们是如何处理模型对象的。 为了在客户端和服务器之间共享模型,您是否将模型类放在不同的jar中?你总是使用DTO,或者你有时(总是?)返回jpa实体。JAX-RS:模型和最佳实践

我必须使用的服务(我没有创建它,但我可以修改它),通常会返回实体,所以我想知道如果我将这些类外化,是不是有点奇怪。

您认为如何?你有什么用途?

回答

3

这取决于项目的复杂性和目的使用JAX-RS在它:

  • 非常简单的项目,我不会为一个项目创建一个更DTO层任何
  • 像您的似乎使用JAX-RS只是将数据从java客户端移动到java服务器我不会创建一个更多的层。这是因为您负责两端(客户端和服务器),并且因为您在两个地方重复使用了相同的对象(将它们放在单独的jar和maven模块中是个好主意)
  • 对于使用JAX-RS的项目将API暴露给外部客户端,将模型从API与DTO分离是一个好主意,这样它们可以独立进化。例如,您并不总是希望通过API公开所有字段,或者在更改模型中的某些内容时打破客户端。

稍后编辑

  • 对于一个项目,仅他们的模型数据字段到客户端的子集传送一个DTO层是有用的效率的原因
+0

IMHO一个DTO层是通常需要几个原因:1)分离关注点2)输出尺寸优化。就我而言,一些服务返回的数据量相对较大,我需要DTO对象只发送相关字段。这是我第一次使用jax-rs的经验,但我认为一个好的做法(即,为了使事情变得非常干净,即使这需要时间),也是将DTO层和服务接口外部化。没有? – tibo

+0

这取决于我所说的。我以为你可能需要(几乎)你的客户端的所有领域的用户界面。但是,JPA实体只是POJO,并不是把它们放在客户端上的这种混合关系。我认为只维护一层而不是2层的好处胜过客户端JPA注释的“丑陋”。 – dcernahoschi