2012-02-21 3 views
0

REST와 JAX-RS/JAXB를 이해하려고하는데 많은 수의 관계가있는 라이브러리와 책이 있습니다. 라이브러리에서 소유 한 책에 GET-POST-PUT-DELETE 작업을 수행하여 GET을위한 URL이 "libraries/{library_id}/books/{book_id}"가되도록하십시오. 이 방법으로 구현했습니다. :JAX-RS에서 소유 한 자원

@Stateless 
@Path("libraries") 
public class LibraryFacadeREST extends AbstractFacade<Library> { 

    ...  

    @Path("{library_id}/booksFacade/") 
    public BookFacadeREST getBookFacade() { 
    return bookFacadeREST; 
    } 
    ... 
} 

@Stateless 
@Path("books") 
public class BookFacadeREST extends AbstractFacade<Book> { 
    ... 
    @GET 
    @Path("{id}") 
    @Produces({"application/xml", "application/json"}) 
    public Book find(@PathParam("id") Long id, @PathParam("library_id") long libraryId) { 

     Book book = super.find(id); 

     if (libraryId != -1) { 
      Library library = em.find(Library.class, libraryId); 

      if (book.getLibraries().contains(library)) { 
      return book; 
      } else { 
      return null; 
      } 
     } 

     return null; 
    } 
    ... 
} 

그러나 나는 그것을 좋아하지 않는다.

답변

0

왜 나머지 엔티티는 관련 엔티티가 관계가 있기 때문에 관계가 필요합니까? 나는 책 리소스가 이렇게해야한다고 생각한다.

@Path("libraries/{library_id}/books") 
public class BookFacadeREST extends AbstractFacade<Book> { 
    @GET 
    @Path("{id}") 
    @Produces({"application/xml", "application/json"}) 
    public Book find(@PathParam("id") Long id, @PathParam("library_id") long libraryId) { 
     ... 
    } 
} 
+0

나는 똑같은 생각이다. 이 방법으로 클래스를보다 쉽게 ​​읽을 수 있습니다. – Antonio

관련 문제