Я думаю, что лучше сказать, что JAX-RS требует, чтобы вы использовали представления .
Мой объект домена Foo не подозревает, что он используется в режиме RESTful. Он знает только Bar (еще один агрегатный корень) и все сущности, по которым он может перемещаться через этот Bar. На самом деле, у меня также есть интерфейс командной строки для этого приложения, который не использует REST или даже HTTP.
Мой интерфейс RESTful включает Foo / Bar в представления, которые связаны друг с другом через URI. Я полагаю, вы можете назвать эти DTO, но если вы (как указано в других ответах) просто аннотируете свою модель предметной области тем, что требуется для их маршалирования и демаршалирования, то я думаю, что вы кодируете себя в углу, запрещающем HATEOAS. *
Это также очевидно, когда у вас есть коллекция. Если Foo -> * Bar, вы собираетесь вернуть все элементы бара в их неупорядоченном виде? Почему бы не просто URI и, возможно, некоторые другие минимальные данные,
например,
GET FOO / FFF
<foo>
<link rel="self" uri="uri="foo/fff" />
<bar uri="bar/abc123">
<status="Active" />
</bar>
<bar uri="bar/qqq">
<status="Inactive" />
</bar>
</foo>
Если клиент хочет узнать больше о данном баре, он может
GET bar / abc123
<bar>
<link rel="self" uri="bar/abc123" />
<foo uri="foo/fff" />
<status>Active</status>
<title>Some Bar</title>
...
</bar>