ORM基础知识概述_第1页
ORM基础知识概述_第2页
ORM基础知识概述_第3页
ORM基础知识概述_第4页
ORM基础知识概述_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ORMORM-概念对象关系映射〔ObjectRelationalMappingORM〕是一种为了解决面对对象与关系数据库存在的互不匹配的现象的技术。简洁的说,ORMjava对象自动长久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。这也同时示意者额外的执行开销;然而,假设ORM作为一种中间件实现,则会有很多时机做优化,而这些在手写的长久层并不存在。更重要的是用于掌握转换的元数据需要供给和治理;但是同样,这些花费要比维护手写的方案要ODMG对象关系映射〔Object/RelationMappin,简称ORM的。面对对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。面对对象是从软件工程根本原则(如耦合、聚合、封装)的根底上进展起来的,而关系数据库则是从O/R开头。字母O“(Object)R“(Relational)。几乎全部的程序里面,都存在对象和关系数据库。在业务规律层和用户界面层中,我们是面对对象的。当对象信息发生变化的时候,我们需要把对象的信息保存在关系数据库中。当你开发一个应用程序的时候(不使用O/RMapping),你可能会写不少数据访问层的代码,用来从数据库保存,删除,读取对象信息,等等。你在DAL中写了很多的方法来读取对象数据,转变状态对象等等任务。而这些代码写起来总是重复的。假设翻开你最近的程序,看看DAL代码,你确定会看到很多近似的通用的模式。我们以保存对象的方SqlCommand对象添加SqlParameterCommandTextSqlCommand。对于每个对象都要重复的写这些代码。除此之外,还有更好的方法吗?有,引入一个O/RMapping。实质上,一个O/RMapping会为你生成DALDALO/RMappingO/RMappingO/RMappingSQL,你只需要关心对象就好。ORM:CRUDAPI;APImappingmetadataORMdirtychecking,lazyassociationfetching其他的优化操作。对象-关系映射模式从《公共仓库元模型:开发指南》一书第8CWM型(CWMUMLMicrosoftSQLServer个人认为可以作为将本体(Ontology)文件存储到关系型数据库中的一种可借鉴方法。(CWM)是对象治理组织(OMG)UML是主流),所以该书的作者倾向于使用成熟的关系型数据库来保存-这也是存储本体时所遇到的问题。承受方法:将UML模型中的各种元素通过转换,保存为数据库模式。由于CWM是一种元模型,因此模型的实例也是一种模型,将这种实例以数据库数据的形式保存。使用数据库中比较成熟的存储过程技术提高开发和执行效率。1、数据类型映射模式简洁数据类型模式:建立UML和关系型数据库中简洁数据类型的映射表以指导映射。枚举数据类型模式:每种枚举类型对应一个表,只有一个列(_EnumLiteral)表示枚举值。基于类的数据类型模式:使用外键约束,将根底列与基于类的类型实例相关联。2、类映射模型每个类对应一个表。单值属性、多值属性、继承关系可以用下述方法映射,而引用属性将在关联映射模式中提到。cardinality11〔必需有的属性,列属性为NOTNULL。多值属性模式:每个多值属性映射成一个独立的表,使用外键连接到类所对应的表上。继承模式:每参加一个类的实例时,依据其继承关系自顶向下生成每个类的对象,这些对象具有ID〔根对象对应记录的主键。删除对象实例时,自底向上删除数据。遇到从中间删的状况怎么办?多重继承怎么处理?3、关联映射模式一对一关联模式:在关联两端各加一列。一对多关联模式:和3.1一样。假设多这端是有序的,还需参加一列表示序号。多对多关联模式:将关联单独作一个表。组合关联模式:留意级联式删除。反演关联模式:关联两端指向相关的类型,和一般关联一样。成对关联模式:关联记录两个类间的关系,用交集类表示关联,表示成一个单独的表,每个关联对应一个表,用外键表示它们间的关系。OCL保证关联的cardinality也需要分析成对应的存储过程代码。4、引用映射模式UMLMOFORM-核心原则简洁:以最根本的形式建模数据。传达性:数据库构造被任何人都能理解的语言文档化。准确性:基于数据模型创立正确标准化了的构造。典型地,建模者通过收集来自那些生疏应用程序但不娴熟的数据建模者的人的信息开发信息模型。建模者必需能够用非技术企业专家可以理解的术语在概念层次上与数据构造进展通讯。建模者也必需能以简洁的单元分析信息,对样本数据进展处理。ORMORM-规章表达式ORM把应用程序世界表示为具有角色〔关系中的局部〕的一组对象〔实体或值。ORM有时也称为基于事实的建模,由于它把相关数据描述为根本领实。这些事实假设分割为再小的事实就会丧失信息。ORM-例子人有人住在某个地方人生于某个日期人在某个日期被雇佣ORM供给的不只是描述不同对象间关系的一个简洁而直接的方式。ORM还供给了敏捷性。使用ORM型比使用其它方法创立的模型更有力量适应系统的变化。另外,ORM允许非技术企业专家按样本数据谈论模型,因此他们可以使用真实世界的数据验证模型。由于ORM允许重用对象,数据模型能自动映射到正确标准化的数据库构造。ORMORM据库的底层构造。为什么要使用ORM技术?1、繁琐的代码问题:用JDBC的API累赘,简洁出错,例如:publicvoidaddAccount(finalAccountaccount)throwsDAOException{finalConnectionconn=getConnection;PreparedStatement pstmt=con.prepareStatment(“insert into accountvalue(?,?,?,?,?,?,?,?,?)“);pstmt.setString(1,account.getUserName);pstmt.setInt(2,account.getPassWord);pstmt.setString(3,account.getSex);pstmt.setString(4,account.getQq);......pstmt.execute;conn.Close;}可见,程序员需要消耗大量的时间、精力去编写具体的数据库访问的SQL语句,还要格外留神其中大量重复的源代码是否有疏漏,并不能集中精力于业务规律开发上面。ORMJavaSQLJava2、数据库对象连接问题关系数据对象之间,存在各种关系,包括11、11、多对多、级联等。在数据库对象JDBC而这个过程是一个很苦痛的过程。ORMJavaJava象的关系,并且供给了维持这些关系完整、有效的机制。3、系统架构问题现在的应用系统,一般由展现层、业务规律层、数据访问层、数据库层等组成,各层次功能划分非常清楚。JDBCJDBC编程时,程序员必需知道后台是用什么数据库、有哪些表、各个表有有哪些字段、各个字段的类型是什么、表与表之间什么关系、创立了什么索引等等与后台数据库DBA。使用ORM技术,可以将数据库层完全隐蔽,呈献给程序员的只有JavaJavaGetterSetter后台承受什么数据库、有哪些表、有什么字段、表与表之间有什么关系。于是,系统设计人员把ORM搭建好后,把Java数据库层清楚分界。4、性能问题JDBCpstmt=conn.prepareStatement(“insertintouser_infovalues(?,?)“);for(inti=0;i<1000;i++){pstmt.setInt(1,i);pstmt.setString(2,“User“+i.toString);pstmt.executeUpdate;}1000SQLORMORMSQL如上面的程序,只会在循环完成后,一次向数据库发送操作恳求,从而大大降低通讯量,提高运行效率;ORMORM目前众多厂商和开源社区都供给了长久层框架的实现,常见的有:ApacheOJB〔“:///ojb/“:///ojb/〕Cayenne〔“:///cayenne/“:///cayenne/〕Jaxor〔“:///“://〕Hibernate〔“:///“://〕iBatis〔“://ibatis/“://ibatis〕jRelationalFramework〔“:///“://〕mirage〔“:///en/oss/mirage/toon“:///en/oss/mirage/toon〕SMYLE〔“://drjava.de/smyle“://drjava.de/smyle〕TopLink〔“://otn.oracle/products/ias/toplink/index.html“://otn.oracle/products/ias/toplink/index.html〕其中TopLink是Oracle的商业产品,其他均为开源工程。其中Hibernate的轻量级ORM模型逐步确立了在JavaORM架构中领导地位,甚至取代简单而又繁琐的EJB模型而成为事实上的JavaORM工业标准。而且其中的很多设计均被J2EE标准组织吸纳而成为最EJB3.0标准的标准,这也是开源工程影响工业领域标准的有力见证。Hibernate框架ORM对于Hibernate的称呼有很多,比方工具、技术、框架以及解决方案等,这些都可以,重要的是大家要知道它的作用。在这里我习惯性称它为框架,它是一种能实现ORM的框架。能实现ORM,HibernateJBossORM现在在Java领域大家对Hibernate的争论很多,比方它的优缺点、如何应用、错误如何解决以及把它和Struts/SpringHibernateORMORM些问题就是围围着一个词,那就是“映射ORMHibernateORM射类〔*.java、映射文件〔*.hbm.xml〕以及数据库配置文件〔*.properties或*.cfg.xml,它们各自的作用如下。⑴映射类:它的作用是描述数据库表的构造,表中的字段在类中被描述成属性,将来就可以实现把表中的记录映射成为该类的对象。⑵映射文件:它的作用是指定数据库表和映射类之间的关系,包括映射类和数据库表的对应关系、表字段和类属性类型的对应关系以及表字段和类属性名称的对应关系等。⑶数据库配置文件:它的作用是指定与数据库连接时需要的连接信息,比方连接哪中数据库、登录用户名、登录密码以及连接字符串等。JavaXMLProperties格式或者是XML格式。想理解“映射”首先我们需要知道如何解析这三种文件,即解析XMLPropertiesJava下面我们来分别探讨一下如何实现这些文件的解析。XMLXMLXMLXML可以猎取这两个文件的信息。XML文件格式我简洁做下介绍,比方<namesex=”male”>tom</name>这句就XMLname<name>和完毕标记</name>,在开头标记中我sexXMLSAXDOM,这两种方式的差异和优缺点大家可以上网查阅或者我们会在以后的文章中提出,请大家关注。实现解析XML文件的功能很便利xml-apis.jarxercesImpl.jarJDKDocumentBuilderFactory、DocumentBuilder、Document、Element等等,大家可以通过API查阅这些类的说明。通过这些类我们可以把XML文件的信息读入内存并通过类中的某些方法猎取指定节点的名字、值、属性名、属性值这些信息。PropertiesXMLPropertiesProperties的形式描述信息。假设配置文件承受Properties文件描述,我们就需要想方法解析这种类型的文件了。想解析Properties文件大家就需要生疏Propertiesload加载指PropertyNames返回全部属性名,getProperty返回指定属性名的属性值。通过解析Properties文件我们可以得到连接数据库必要的信息,然后通过底层JDBC立连接。Java通过解析映射文件和数据库配置文件我们可以建立数据库的连接,可以得到映射类的名字、属性名、数据库表名、字段名以及类型等信息。要把数据库中表的数据映射成为对象,首先需要把表中的记录用出,然后将每个字段值给映射类对象的每个属性,这个赋值过程要调用对象中的set方法。我们现在通过映射文件只知道类名和属性名,如何依据类名和属性名调用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论