JAX-RS, Jackson 및 JPA를 사용하는 프로젝트에서 작업 중입니다. JAX-RS 리소스는 들어오는 JSON을 궁극적으로 영속화 될 POJO (JPA)에 직접 매핑합니다. POJO가 1 :JAX-RS 및 Jackson으로 추가 매개 변수 매핑
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response createEntity(Entity entity) {
...
}
그러나, 나는 때때로 정보 자원이 깔끔하게 1지도를하지 않는 클라이언트에서 필요로하는 것을 찾을 수 있습니다. 요청을 처리하는 방법에 대한 일부 메타 데이터를 제공하는 추가 필드가 있습니다. 예를 들어, 콜백 URL 또는 유지되지 않는 일반 텍스트 암호입니다.
여전히 JPA 엔티티에 직접 매핑되는 동안이 정보를 유지하는 우아한 방법이 있습니까?
나는 몇 가지 아이디어를 가지고,하지만 난 그들 중 함께 흥분 아니에요 그런 다음 특정 속성을 무시하도록 구성하는 개체에 매핑 할 ObjectMapper를 사용
- 먼저지도
Map<String, Object>
에 . 결과적으로 특정 리소스에 대한 보일러 플레이트 코드가 추가됩니다 (일관성을 위해 JSON을 소비하는 모든 리소스) - 여분의 값을 위해 @Transient 필드 사용 : 이렇게하면 잭슨이 POJO에 완전히 매핑되지만 데이터 모델이 복잡해집니다. 사업체의 상태와 행동에 대해 스스로를 고려하는 대신 비즈니스 로직을 사용하는 것입니다.
- 여분의 값으로 @QueryParam을 사용하십시오. : 리소스에 대한 인터페이스가 복잡해 보이고 클라이언트 관점에서 임의로 보입니다.
아이디어가 있으십니까? JAX-RS MessageBodyReader 나 어떤 종류의 컨텍스트 프로 바이더를 추가 매개 변수의 맵을 메서드에 추가 인수로 전달할 수 있다면 좋겠지 만, 얼마나 많은 일이 될지 모르겠다.