使用对象-关系映射(ORM)系统中间件提升软件开发…

2008-02-23 09:21:14来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

一、什么是对象-关系映射(ORM)?  

  对象-关系映射(Object/Relation Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。
    
二、为什么要引入对象-关系映射中间件?
   在开发关系数据库的系统时,可以通过SQL语句读取及操作关系数据库数据。在Java领域,可以直接通过JDBC编程来访问数据库。JDBC可以说是JAVA访问关系数据库的最原始、最直接的方法。这种方式的优点是运行效率高,缺点是在Java程序代码中嵌入大量SQL语句,冗余是不可避免的,开发人员常常发现自己在一次又一次地编写相同的普通代码,如获得连接、准备语句、循环结果集以及其他一些 JDBC 特定元素,使得项目难以维护。特别是当涉及到非常多的关系数据表、需要在多个不同类型的关系数据库系统中使用时,通过在程序中使用JDBC开发实施起来更加困难。
   在开发基于数据应用为主的软件系统时,引入对象-关系映射中间件是提高开发效率、提升软件产品的可维护、扩展性的现实需要。实践表明,在基于数据处理为主的企业级应程序开发中,通过引入对象-关系映射中间件,可以节省与对象持久化有关的差不多35%的编程工作量,同时提升软件产品可维护及易扩展性,提升软件产品质量。
   因此,在开发企业级应用时,有必要通过引入对象-关系映射系统中间件,实现数据库的快速开发。企业可以通过JDBC编程来开发单独的持久化层,把数据库访问操作封装起来,提供简洁的API,供业务层统一调用,实现自己的ORM系统中间件。
   当然,一个成熟的对象-关系映射中间件产品,不只是简单的把内存中的对象持久化到数据库、把数据库中的关系数据加载到内存中,还要保证系统频繁地访问数据库的性能,降低访问数据库的频率,需要引入多线程、缓存、事务管理等很多细节,涉及到的技术比较复杂,因此,我们更多是使用市场上优秀的ORM系统中间件产品。
  
三、当前JAVA主流的对象-关系映射中间件产品?
   对象关系映射程序(Object Relational Mappers,ORM)有多种形式。在 Java领域,大多数流行的 ORM 都可以实现完整的域模型映射,它的目标是将整层的对象和行为映射到数据库表。当前主流的 ORM 中间件产品主要有:
   Hibernate(重点推荐)
   JDO
iBatis
   EJB Entities 3
   EJB Entity Beans 2.x
   TopLink
   在众多的ORM中间件产品中,Hibernate是笔者重点推荐的。Hibernate是一个基于Java的开放源代码的持久化中间件,它对JDBC做了轻量级封装,不仅提供ORM映射服务,还提供数据查询和数据缓存功能,Java开发人员可以方便地通过Hibernate API来操纵数据库。现在,越来越多的Java开发人员把Hibernate作为企业应用和关系数据库之间的中间件。

四、使用EasyDBO实现简单的对象-关系映射
   EasyDBO是由简易java框架网(
www.easyjf.com)开发的一个适合中小型软件数据库开发的java数据持久层框架,系统参考hibernate、JDO等,结合中小项目软件的开发实际,实现简单的Java对象到关系数据的映射。EasyDBO由于比较简单,比较适合于中小企业及个人开发使用,EasyDBO当前还处于测试阶段、是一个简易但不太成熟的对象-关系映射开源中间件。
  EasyDBO的源代码非常简单,有一点Java知识的人基本上都能读懂,因此,选择EasyDBO作本文的示例主要目的在于让读者快速进入ORM系统的世界,理解对象-关系数据库实质及实现原理。
   EasyDBO考虑的是最简单的对象-关系映射,简单到可以不使用任何配置文件就实现对象-关系的映射。EasyDBO源码主要包括com.easyjf.dbo、com.easyjf.dbo.config、com.easyjf.dbo.sql三个包。其中com.easyjf.dbo是框架的核心、实现了对象-关系的转换、JDBC API的封装以及用户接口支持等,com.easyjf.dbo.config实现配置文件的管理,com.easyjf.dbo.sql实现数据库的简单Sql语句的生成及多数据库支持的扩展。
   在当前推出的测试版本中,程序员使用EasyDBO操作数据库主要关注EasyJDO类提供的方法及原数据对象DBObject类、IObject接口即可。

五、使用EasyDBO的开发数据库应用程序示例
   下面我们看看使用EasyDBO是怎么样实现数据库的开发。
   假设一个留言版系统存放留言信息关系数据表(message)的结构为:
   cid: varchar 16 主键
   title: varchar 50
   content: text
   inputUser: varchar 16
   inputTime: datetime
   status: int
  
相应java中的类Message定义为
   import java.util.Date;
   import java.util.List;
   import com.easyjf.dbo.EasyJDB;
   import com.easyjf.dbo.IObject;
   //实现com.easyjf.dbo.IObject接口从而使得你的对象无需要配置文件即可与关系数据表映射
   public class Message implements IObject {
   private String cid;
   private String title;
   private String content;
   private String inputUser;
   private Date inputTime;
   private Integer status;
   public String getTableName() {
   return "message";
   }
   public String getKeyField() {

   return "cid";
   }
   public String getKeyGenerator() {
   return "com.easyjf.dbo.IdGenerator";
   }
   public String getCid() {
   return cid;
   }
   public void setCid(String cid) {
   this.cid = cid;
   }
   public String getContent() {

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:javax.ejb.HomeHandle翻译

下一篇:基于struts spring ibatis的轻量级J2EE开发