-3
Java EE에서 안정적인 API 디자인을 개발하고자하지만 Restful 서비스 구현의 다른 모델을 견뎌야합니다.Java EE의 RESTful 디자인 패턴
@Path("/users")
public class UserResource
{
@EJB
UsersFacade em;
@GET
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Path("{name}")
public User getUser(@PathParam("name") String _name)
{
UsersBean u = em.findByName(_name);
if (u == null)
{
throw new WebApplicationException(404);
}
return User.fromEntity(u);
}
....
}
및 넷빈즈에 의해 생산되는 두 번째 같이이다 :
첫 번째 모델은 데이터를 검색하기 위해 나머지 클래스에서 @EJB를 사용
@Stateless
@Path("entities.customer")
public class CustomerFacadeREST extends AbstractFacade<Customer> {
@PersistenceContext(unitName = "CustomerDBPU")
private EntityManager em;
public CustomerFacadeREST() {
super(Customer.class);
}
@GET
@Path("{id}")
@Produces({"application/xml", "application/json"})
public Customer find(@PathParam("id") Integer id) {
return super.find(id);
}
....
}
당신이 알 수 있듯이, 차이점은 두 번째 방법 인 Rest 클래스 구현은 SLJB (Stateless Java Bean)이며 @PersistenceContext를 사용하여 JPA의 인스턴스를 가져오고 AbstractFacade를 확장한다는 점입니다.
그러나 첫 번째 메소드에서는 @EJB를 사용하여 Bean의 인스턴스 만 검색합니다.
어느 쪽을 원하십니까? 그리고 왜?
이것은 완전히 REST와 관련이 없으며 질문은'@ EJB'와'@ PersistenceContext '에 관한 것입니다. 질문을 편집하고 질문을 공식화하는 데 필요한 수준으로 줄이십시오. –
@Lutz Horn, 저는 Rest 기반 API를 구현하는 것이 더 나은 방법인지 알고 싶습니다. 그리고 왜? – user335870
상관 없어요. REST는 서로 다른 배선 종속성 사이에서 선택하는 것이 아닙니다. 두 클래스 모두 REST와 관련된 모든 것이 동일합니다. –