私は現在、@Entity
次のような Webプロジェクトに取り組んでいます。
@Entity
@Table(name = "variable")
@XmlRootElement
public class Variable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(unique = true, nullable = false)
private String name;
@Column
@Enumerated(EnumType.STRING)
private VariableType type;
@Column(nullable = false)
private String units;
@Column
private String description;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "created_on", nullable = false)
private Date createdOn;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "retired_on", nullable = true)
private Date retiredOn;
@Column(nullable = false)
private boolean core;
}
このオブジェクトをJSONに変換するために、オブジェクト@XmlRootElement
をバインドするエンティティを接続していますJAXB
私のREST
呼び出しメソッドは次のようになります
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getVariables() {
return Response.ok(variableManager.getVariables()).build();
}
このアプローチにはいくつかの問題があります。
- 永続性をプレゼンテーション層に緊密に結合します。バックエンドで何かが変更された場合、プレゼンテーション層で同じことが発生/公開されます。望ましくない
- プレゼンテーション層の戻りデータは、この場合は実行不可能なエンティティよりも少ない/多い(別のオブジェクトの複合)データである可能性があります
一般的なWebアプリケーション層には、通常3つの層があります
presentation/
business/
persistence/
プレゼンテーションを定義し、オブジェクトをJSON / XMLに変換するかどうかの決定は、プレゼンテーション層で行う必要があります。XML/JSON
オブジェクトを永続層にバインドせずに変換できる方法を探しています。@XmlRootElement
あなたの考えを共有してください