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编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |