2016-11-25 84 views
-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的实例。

你更喜欢哪一个?为什么?

+4

这与REST完全无关,你的问题是关于'@ EJB' vs'@ PersistenceContext'。请[编辑]你的问题,并将其减少到制定你的问题所必需的。 – 2016-11-25 10:31:39

+0

@Lutz Horn,我想知道,哪一个更好的实践来实现Rest基于API。为什么? – user335870

+2

没关系。 REST不是关于在不同的布线依赖关系之间进行选择。这两个类在与REST相关的所有内容中都是相同的: – 2016-11-25 10:38:18

回答

2

没关系。 REST不是关于在不同的布线依赖关系之间进行选择。这两个类在与REST相关的所有内容中都是相同的。