当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:13:00  来源:本站整理

Java学习杂谈(十一)--ORM[Java编程]

赞助商链接



  本文“Java学习杂谈(十一)--ORM[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

这是最后一篇Java杂谈了,以ORM框架的评论收尾,也算是把J2ee的最后一方面给涵盖到了,之所以这么晚才总结出ORM这方面,一是笔者这两周对比忙,另一方面也想善始善终,细心的先自己好好研究一下ORM框架技术,不想草率的敷衍了事.

其实J2ee的标准指南里面就已经包含了一些对象长期化技术,比方JDO(Java Data Object)就是Java对象长期化的新标准,一个用于存取某种数据仓库中的对象的尺度化API,供应了透明的对象存储,对开辟人员来说,存储数据对象完好不需求额外的代码(如JDBC API的利用).这些烦琐的工作已经转移到JDO产品供应商身上,使开辟人员摆脱出来,从而集合时间和精神在业务逻辑上.别的,JDO很机动,因为它可以在任何数据底层上运行.JDBC只是面向关系数据库(RDBMS)JDO更通用,供应到任何数据底层的存储功效,比方关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得利用可移植性更强.我们假如要理解对象长期化技术,首先要问自己一个问题:为什么传统的JDBC来长期化不再能满意大家的需求了呢?

笔者认为最好是能用JDBC真正编写历程序了才能真正领会ORM的好处,一样的原理,真正拿Servlet/Jsp做过项目了才能领会到Struts、Spring等框架的便利之处.很幸运的是笔者这二者都曾经阅历过,用混乱的内嵌Java代码的Jsp加Servlet转发写过完好的Web项目,也用 JDBC搭建过一个完好C/S项目的后台.所以目前接触到新框架才更能领会它们思惟和实现的优胜之处,回想早年的代码,真是丑陋不堪啊.^_^

回到正题,我们来研究一下为什么要从JDBC发展到ORM.简单来说,传统的JDBC要花大量的反复代码在初始化数据库衔接上,每次增删改查都要得到 Connection对象,初始化Statement,履行得到ResultSet再封装成自己的List大概Object,这样造成了在每个数据拜候办法中都含有大量冗余反复的代码,考虑到安全性的话,还要加上大量的事件掌握和log记录.固然我们学习了计划情势之后,可以自己定义Factory来帮忙削减一部份反复的代码,但是仍旧无法避免冗余的问题.其次,随着OO思惟深化人心,连典型的历程化语言Perl等都冠冕堂皇的加上了OO的外壳,何况是 Java中复杂的数据库拜候长期化技术呢?夸大面向对象编程的后果就是找到一个桥梁,使得关系型数据库存储的数据能精确的映射到Java的对象上,然后针对Java对象来计划对象和办法,假如我们把数据库的Table当作Class,Record当作Instance的话,便可以完好用面向对象的思惟来编写数据层的代码.于是乎,Object Relationship Mapping的概念开始广泛遭到器重,固然很早很早就已经有人提出来了.

缺陷我们已经大约清楚了,那么若何改良呢?对症下药,首先我们要办理的是若何从Data Schema预备完善的映射到Object Schema,别的要供应对数据库衔接对象生命周期的管理,对事件差别粒度的掌握和考虑到扩大性后供应对XML、Properties等可配置化的文件的支持.到目前为止,有很多框架和技术在尝试着这样做.比方仿佛是封装管理得过了头的EJB、很早就呈现目前已经不在开辟和进级了的Apache OJB、首先支持Manual SQL的iBATIS,还有公认非常优异的Hibernate等等.在辨别介绍它们之前,我还想反复夸大这些框架都在试图做什么:

毕竟Java Object和数据库的每一条Record还是有很大的辨别,就是范例上来说,DB是没有Boolean范例的.而Java也不得不用封装类(Integer、Double等)为了能映射上数据库中为null的情形,毕竟Primitive范例是没有null值的.还有一个对比明显的问题是,数据库有主键和外键,而Java中仍旧只能通过基本范例来对应字段值罢了,无法规定Unique等特点,更别提外键约束、事件掌握和级联操作了.别的,通过Java    Object预设某Field值去取数据库记录,能否在这样的记录也是不能保证的.真的要计划到完好映射的话,Java的Static被全部对象同享的变量怎么办?在数据库中若何表现出来……

我们能看到大量的问题像一座座大山横在那些框架计划者们眼前,他们并非没有办理办法,而是从差别的角度去考虑,会得到很多差别的办理筹划,问题是应当采纳哪一种呢?乃至只有等到真正计划出来了投入生产利用了,才能印证出当初的假想能否真的能为项目开辟带来更多的好处.笔者引用一份文档中提到一个结实的长期化框架应当具有的特点:

A    robust persistence    layer    should    support——

1.Several    types    of    persistence    mechanism

2.Full    encapsulation    of    the    persistence    mechanism.

3.Multi-object    actions

4.Transactions    Control

5.Extensibility

6.Object identifiers

7.Cursors:    logical    connection    to    the    persistence    mechanism

8.Proxies:    commonly    used    when    the    results    of    a    query    are    to    be    displayed    in    a    list

9.Records:   avoid   the   overhead    of    converting    database    records to    objects    and    then    back    to    records

10.Multi    architecture

11.Various    database    version    and/or    vendors

12.Multiple    connections

13.Native    and non-native    drivers

14.Structured    query    l


  以上是“Java学习杂谈(十一)--ORM[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .