[
https://issues.jboss.org/browse/FORGE-1060?page=com.atlassian.jira.plugin...
]
Vineet Reynolds commented on FORGE-1060:
----------------------------------------
The current REST plugin enhances the base JPA entities for the REST resources with
{{@XmlRootElement}} annotations. This would need to be done away with, but introduced in
the DTOs.
REST plugin should support creation of DTOs for the underlying JPA
entities of REST resources
---------------------------------------------------------------------------------------------
Key: FORGE-1060
URL:
https://issues.jboss.org/browse/FORGE-1060
Project: Forge
Issue Type: Feature Request
Components: Builtin Plugins
Reporter: Vineet Reynolds
Assignee: Vineet Reynolds
Priority: Critical
Using JPA entities directly in the REST resources is obviously not proving to be of much
help:
* It leads to problems when working with cyclic dependencies, as seen in FORGE-606. Using
{{@JsonIdentityInfo}} to resolve this has lead to further problems on the client side due
to the lack of support in JavaScript clients to handle JSON object references out of the
box.
* It requires the entire object graph to be eagerly fetched and made available during the
serialization process. During deserialization, JPA merges could result in incorrect
behavior since merges of object graphs depend on whether the collection was previously
fetched or not. Merges are not expected to occur by spec, unless the collection was
fetched. See [
HHH-4135|https://hibernate.atlassian.net/browse/HHH-4135] and
[
HHH-5187|https://hibernate.atlassian.net/browse/HHH-5187] for some details on Hibernate,
with differing behavior in EclipseLink.
* It requires manipulation of the relational associations across entities to modify the
resource representations, thus lacking separation of concerns.
* It provides no control over the depth of the object graph to be serialized. Annotations
like {{@JsonIgnore}} are required to be placed on JPA entities which does not aid in
separation of concerns. Custom serializers/deserializers offer little benefit concerning
standards since they requires compilation against specific versions of the JSON libraries
like Jackson for every container that is to be supported.
Therefore it is proposed to have the REST plugin create DTOs for representing the state
of the JPA entities in the REST resources.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:
http://www.atlassian.com/software/jira