-3
我打算在Java EE中开发Restful API设计,但是我面临着两种不同的Restful服务实现模式。Java EE中的REST风格的设计模式
的第一款车型使用@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' vs'@ PersistenceContext'。请[编辑]你的问题,并将其减少到制定你的问题所必需的。 – 2016-11-25 10:31:39
@Lutz Horn,我想知道,哪一个更好的实践来实现Rest基于API。为什么? – user335870
没关系。 REST不是关于在不同的布线依赖关系之间进行选择。这两个类在与REST相关的所有内容中都是相同的: – 2016-11-25 10:38:18