YunEngine教程(2)- Servlet和JPA

Sina WeiboBaiduLinkedInQQGoogle+RedditEvernote分享




在前一篇教程中提到,由于YunEngine才刚刚发展起来,所以YunEngine在公测阶段将主要支持的是Servlet的JPA这两套API,并且我将在本教程之后的几篇文章重点介绍Servlet和JPA是如何编程的,而本节将对Servlet和JPA进行综述。

 

Servlet

Servlet技术主要用于在Web端处理各种HTTP请求,Servlet的1.0版发表于1997年6月,而在2010年的3月份其3.0版也正式发表了。虽然Java EE本身包括有很多规范,但是真正深入人心,并被大家长期使用的就只有Servlet和其衍生品JSP(Java Server Page),而且大多数的Java Web框架都是基于Servlet的,其中最鲜明的例子莫过于Struts。还有很多能很好支持Servlet的Web容器,最出名的有Tomcat、Jetty和Resin。

在使用方面,由于其使用经典的CGI(Common Gateway Interface)模式,所以开发起来非常简洁明了,而且Eclipse内置一些Web容器的插件,比如Tomcat等,所以程序员能够非常轻松在Eclipse上调试基于Serlvet的Web程序,这样极大地提高了开发的效率。还有,假如用户觉得Servlet所提供的Web功能还不够全面或者太过基础,完全可以选择各种基于Servlet的框架,比如,上面提到的Struts。

jetty-logo

在YunEngine的实现方面,为了避免出现“重新发明轮子”的尴尬,在Servlet的支持方面,YunEngine是基于Jetty 7的,虽然Jetty在代码质量和管理方面都无法与Tomcat想提并论,但是其Codebase非常小,使得其在嵌入性和资源消耗这两方面都非常出色,所以Jetty成为了YunEngine Web容器部分的最佳选择,并且任何基于Servlet的框架(比如Structs等)YunEngine也支持

 

JPA

JPA的全称为“Java Persistence API”,是一套用于数据处理的ORM(对象关系映射)框架。由于之前Entity Bean在设计上存在重大的缺陷,使得使用者深受其害,为了解决这一非常尴尬的情况,JCP在Java EE5中推出了全新的JPA框架,并在最新的Java EE6中进一步推出了其2.0版,在设计上JPA受到了Hibernate、JDO和TopLink的影响,并在它们的基础上却长补短,并进行一定程度的简化。在实现方面,现在主要有DataNucleus、OpenJPA,TopLink的后裔EclipseLink和Hibernate JPA这四种。

在使用方面,用户只需使用几个简单的注解,就能轻松实现大多数关系型数据的建模,而且提供了语法类似SQL的JPQL查询语言,但瑕不掩瑜,在处理某些复杂的数据建模时还是需要学习一些比较复杂的技巧,比如,多对多映射等。还有,在部署的时候,JPA不依赖重量级的应用服务器,不论是普通的Web容器还是最简单J2SE环境都能运行JPA,而且各大中间件厂商也都提供JPA的支持。虽然与直接写JDBC代码相比,JPA在学习成本和直观度方面有所欠缺,但是由于其在维护性方面的优势,所以从长期而言,我非常看好JPA。

logo

在YunEngine的架构中,由于后端并不是传统的关系型数据库,而是YunTable集群,这导致了无法重用Hibernate JPA和EclipseLink这样已有的JPA实现,但是为了让YunEngine支持JPA这个最新的,也是最有希望的ORM框架,我根据JPA2.0的规范编写了一套JPA实现,名为“YunJPA”,其现阶段不仅能有效地实现大部分JPA2.0规范所支持的功能,并且能极大地利用YunTable所提供的强大动力。

 

本篇结束,下篇将会关注Servlet的编程部分。

(1个打分, 平均:5.00 / 5)

雁过留声

Comments are closed.