与Spring和Hibernate的RESTful Web服务集成

时间:2013-11-15 14:32:21

标签: java spring web-services hibernate rest

我正在学习RESTful Webservice。

我正在使用Hibernate 4和Spring 3.我想知道是否需要实现REST服务,我从MyController类调用服务实现类EmployeeServiceImpl?并调用get,从客户端层放置REST的删除方法?

如果使用Spring,哪个REST项目可以使用CXF或Jersey? 为REST服务创建Controller类的最佳方法是什么?

服务实施类

@Transactional
@Service(value = "empService")
public class EmployeeServiceImpl implements EmployeeService {

@Inject
EmployeeDAO employeeDAO;

@Override
public List<Emp> findAllEmployees() {
return getEmployeeDAO().findAllEmployees();
}

DAO实施课程

@Repository("empDAO")
public class EmployeeDAOImpl extends GenericDAOImpl<Emp> implements EmployeeDAO {

@PersistenceContext
private EntityManager entityManager;

@Override
public List<Emp> findAllEmployees() {
CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
cq.select(cq.from(Emp.class));
return getEntityManager().createQuery(cq).getResultList();
}

1 个答案:

答案 0 :(得分:1)

JAX-RS实现(RESTeasy,Jersey)完全是J2E,这意味着您不需要使用Spring。但你可以任何方式使用它。

这里是一个简单的服务示例,用正确的注释装饰,然后不需要任何控制器:

package com.mkyong.rest;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;

@Path("/hello")
public class HelloWorldService {

    @GET
    @Path("/{param}")
    public Response getMsg(@PathParam("param") String msg) {

        String output = "Jersey say : " + msg;

        return Response.status(200).entity(output).build();

    }

}

来源:http://www.vogella.com/articles/REST/article.html

事实上,这个JSR(331)的神奇之处在于你不需要控制器,它会自动映射来自

的调用
/context/{defined_sub_context}/{entity}/{params}

/org.corp.package.app.services.class

如果类使用@Path(“{entity})和方法@Path(”/ {param}“)

进行修饰

很好,不是吗?