Я намерен разработать дизайн Restful API в Java EE, но я столкнулся с различными моделями реализации сервисов Restful.RESTful design pattern в Java EE
первая модель использует @EJB в классах отдыха для извлечения данных:
@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);
}
....
}
и второй один, который производится NetBeans, как это:
@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 (безстоящий Java Bean), и он использует @PersistenceContext для получения экземпляра JPA, а также расширяет AbstractFacade.
Но в первых методах он использует только @EJB для извлечения экземпляра Bean.
какой вы предпочитаете? и почему?
Это абсолютно не связано с REST, ваш вопрос касается '@ EJB' и' @ PersistenceContext'. Пожалуйста, отредактируйте свой вопрос и уменьшите его до того, что необходимо для формулирования вашего вопроса. –
@ Lutz Horn, я хочу знать, что лучше практиковать для реализации API на основе отдыха. и почему? – user335870
Это не имеет значения. REST - это не выбор между различными способами зависимостей проводки. Оба класса идентичны во всем, что связано с REST: –