-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