Web编程学习六:使用Apache olingo将JPA数据库操作转化为RESTful Web Service
2014-04-01 09:55
555 查看
上次使用了Jersey来创建自己的RESTful web service,但是需要自己来创建每个方法,不是很方便。
今天来使用Apache olingo库来将JPA操作自动转化为RESTful service, Apache olingo是SAP捐给Apache的odata库。
下面来看看olingo和jersey相比,有多么的方便。
注意:在JPA转化RESTful的场景中,还需要使用Apache CXF包。
Olingo的主页:http://olingo.apache.org
开发环境是:Eclipse Juno, MySQL 5.5,olingo 1.2,EclipseLink 2.4, Tomcat 7
1.创建一个Dynamic Web Project,名字叫jpa2
2.加入JPA Facet,在lib中导入EclipseLink、MySql Connector、Olingo、Apache CXF包。
3.配置JPA的persistence.xml文件
4.数据对象Employee.java:
5.创建一个继承ODataJPAServiceFactory的类
EmployeeServiceFactory
6.创建web.xml,配置一下olingo
7.搞定,部署项目到Tomcat,往数据库表employee中输入几条测试数据:
8.用Chrome的PostMan来测试一下:
8.1查询全部对象
8.2查询单个对象
8.3创建一个对象
使用Post方法,向url: http://localhost:8080/jpa2/Employee.svc/Employees发送一个employee entry.
这里我用的RestClient:
创建成功后,返回201.
最后再查询一下,返回结果:
小结:从这个例子,可以看到olingo非常方便,只需要简单的配置,就可以自动将JPA全部自动转化为RESTful的Web Service了。
今天来使用Apache olingo库来将JPA操作自动转化为RESTful service, Apache olingo是SAP捐给Apache的odata库。
下面来看看olingo和jersey相比,有多么的方便。
注意:在JPA转化RESTful的场景中,还需要使用Apache CXF包。
Olingo的主页:http://olingo.apache.org
开发环境是:Eclipse Juno, MySQL 5.5,olingo 1.2,EclipseLink 2.4, Tomcat 7
1.创建一个Dynamic Web Project,名字叫jpa2
2.加入JPA Facet,在lib中导入EclipseLink、MySql Connector、Olingo、Apache CXF包。
3.配置JPA的persistence.xml文件
<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> <persistence-unit name="jpa2" transaction-type="RESOURCE_LOCAL"> <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> <class>sample.Employee</class> <properties> <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:8889/test" /> <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" /> <property name="javax.persistence.jdbc.user" value="root" /> <property name="javax.persistence.jdbc.password" value="root" /> </properties> </persistence-unit> </persistence>
4.数据对象Employee.java:
package sample; import javax.persistence.Basic; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity public class Employee { @Id @GeneratedValue private int id; @Basic private String firstName; @Basic private String lastName; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } }
5.创建一个继承ODataJPAServiceFactory的类
EmployeeServiceFactory
package sample; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import org.apache.olingo.odata2.jpa.processor.api.ODataJPAContext; import org.apache.olingo.odata2.jpa.processor.api.ODataJPAServiceFactory; import org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPARuntimeException; public class EmployeeServiceFactory extends ODataJPAServiceFactory { private static final String PERSISTENCE_UNIT_NAME = "jpa2"; @Override public ODataJPAContext initializeODataJPAContext() throws ODataJPARuntimeException { ODataJPAContext oDataJPAContext = this.getODataJPAContext(); try { EntityManagerFactory emf = Persistence .createEntityManagerFactory(PERSISTENCE_UNIT_NAME); oDataJPAContext.setEntityManagerFactory(emf); oDataJPAContext.setPersistenceUnitName(PERSISTENCE_UNIT_NAME); return oDataJPAContext; } catch (Exception e) { throw new RuntimeException(e); } } }
6.创建web.xml,配置一下olingo
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>RestProjectTest</display-name> <servlet> <servlet-name>ODataServlet</servlet-name> <servlet-class>org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet</servlet-class> <init-param> <param-name>javax.ws.rs.Application</param-name> <param-value>org.apache.olingo.odata2.core.rest.app.ODataApplication</param-value> </init-param> <init-param> <param-name>org.apache.olingo.odata2.service.factory</param-name> <param-value>sample.EmployeeServiceFactory</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>ODataServlet</servlet-name> <url-pattern>/Employee.svc/*</url-pattern> </servlet-mapping> </web-app>
7.搞定,部署项目到Tomcat,往数据库表employee中输入几条测试数据:
8.用Chrome的PostMan来测试一下:
8.1查询全部对象
8.2查询单个对象
8.3创建一个对象
使用Post方法,向url: http://localhost:8080/jpa2/Employee.svc/Employees发送一个employee entry.
这里我用的RestClient:
创建成功后,返回201.
最后再查询一下,返回结果:
小结:从这个例子,可以看到olingo非常方便,只需要简单的配置,就可以自动将JPA全部自动转化为RESTful的Web Service了。
相关文章推荐
- Java restful之使用Apache olingo库来将JPA操作自动转化为RESTful
- Web编程学习五: 使用Jersey和JPA来创建RESTful WebService
- SpringBoot学习之路:03.Spring Boot使用Jpa操作数据库
- Web编程学习二: 使用JPA结合JSF来创建Web应用
- Web编程学习四: 使用Jersey来创建RESTful WebService
- android学习---使用Litepal操作数据库2
- iOS学习笔记(十六)——数据库操作(使用FMDB)
- 使用 Apache Wink、Eclipse 和 Maven 开发 RESTful Web 服务
- ACCP学习旅程之-----使用C#开发数据库应用程序(第七章 用ADO.NET查询和操作数据库)
- Java for Web学习笔记(一零三):Spring框架中使用JPA(3)JPA仓库
- JDBC的使用五大步骤以及查询操作-数据库编程(二)
- android学习---使用LitePal操作数据库
- PHP中将对数据库的操作,封装成一个工具类以及学会使用面向对象的方式进行编程
- iOS学习笔记(十六)——数据库操作(使用FMDB)
- 在spring Boot中使用Spring-data-jpa操作数据库
- 【Spring学习笔记】五、使用JDBCTemplate以对象方式操作数据库
- Spring Boot 使用 Spring Data JPA 操作数据库
- Web编程学习三: 使用SAPUI5来创建Web应用UI
- 韩顺平PHP学习视频笔记整理029apache服务器使用及配置④ apache虚拟主机 web访问时序图
- Jpa操作数据库之@Query使用SQL语句