JAX-RS / Jersey를 사용하는 이유는 무엇입니까?
짧은 답변
RESTful 서비스를 더 쉽게 개발할 수 있기 때문입니다.
긴 답변
JAX-RS는 GlassFish, WebLogic, WebSphere, JBoss 등 모든 Java 애플리케이션 서버에 배포 할 수있는 RESTful 서비스를 쉽게 만들 수있는 표준입니다.
JAX-RS는 Java EE의 일부이며 JAX-RS를 다른 Java EE 기술과 함께 사용하면 RESTful 서비스를 훨씬 쉽게 만들 수 있습니다.
- EJB- 세션 빈은 서비스 구현으로 사용되며 트랜잭션 의미 체계도 처리합니다.
- JAX-RS- 세션 Bean을 RESTful 서비스로 노출하는 데 사용됩니다.
- JPA- 데이터베이스에 POJO를 유지하는 데 사용됩니다. EntityManager가 세션 빈에 주입되는 방법에 유의하십시오.
- JAXB -POJO를 XML로 /에서 변환하는 데 사용됩니다 (GlassFish에서 POJO를 JSON으로 /에서 변환하는데도 사용할 수 있음). 기본적으로 JAX-RS는 JAXB 구현과의 상호 작용을 처리합니다.
샘플 JAX-RS 서비스
package org.example;
import java.util.List;
import javax.ejb.*;
import javax.persistence.*;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
@Stateless
@LocalBean
@Path("/customers")
public class CustomerService {
@PersistenceContext(unitName="CustomerService",
type=PersistenceContextType.TRANSACTION)
EntityManager entityManager;
@POST
@Consumes(MediaType.APPLICATION_XML)
public void create(Customer customer) {
entityManager.persist(customer);
}
@GET
@Produces(MediaType.APPLICATION_XML)
@Path("{id}")
public Customer read(@PathParam("id") long id) {
return entityManager.find(Customer.class, id);
}
@PUT
@Consumes(MediaType.APPLICATION_XML)
public void update(Customer customer) {
entityManager.merge(customer);
}
@DELETE
@Path("{id}")
public void delete(@PathParam("id") long id) {
Customer customer = read(id);
if(null != customer) {
entityManager.remove(customer);
}
}
@GET
@Produces(MediaType.APPLICATION_XML)
@Path("findCustomersByCity/{city}")
public List<Customer> findCustomersByCity(@PathParam("city") String city) {
Query query = entityManager.createNamedQuery("findCustomersByCity");
query.setParameter("city", city);
return query.getResultList();
}
}
자세한 내용은: