2016-11-25 43 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相關的所有內容中都是相同的。