Java EE中的宁静设计模式



我打算在Java EE中开发静止的API设计,但我面临着拖车的静止服务的不同模型。

第一个模型在其余类中使用@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的实例。

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

这没关系。休息不是要在不同的接线依赖方式之间选择。这两个类在与休息有关的所有事物中都是相同的。

最新更新