科技与视觉-中文科技-资讯-硬件-学院-汽车-美食-外星探索-科博-讨论区-微软技术-地图-产品报价-家电-模拟攒机-攒机方案-首选产品-软件-驱动-产品论坛
主页>技术社区>IT 技术与微软技术>编程开发>JAVA>J2EE

如何高效使用JavaEEORM框架

Phontol.com 2011/10/16 18:05:25 阅读 113 次

打印


   虽然Java领域有无数的ORM框架,如Hibernate,iBatis,TopLink,JDO,JPA…… 但是这些ORM框架基本上大同小异。很多初学者对JDBC的复杂性望而却步,就简单认为使用ORM就会省时省力,结果恰恰相反,任何好的框架都是给专家准 备的,任何急功近利试图偷懒的方法往往适得其反。要正确使用ORM还真不是一件简单的事情。本文仅简单整理一下ORM的原理,基本用法,以及如何避免各种 陷阱的基本编程原则。

    ORM的原理

    先说ORM的实现原理。其实,要实现JavaBean的属性到数据库表的字段的映射,任何ORM框架不外乎是读某个配置文件把JavaBean的属 性和数据库表的字段自动关联起来,当从数据库Query时,自动把字段的值塞进JavaBean的对应属性里,当做INSERT或UPDATE时,自动把 JavaBean的属性值绑定到SQL语句中。但是,几乎所有的ORM都提供“按需读取”的功能,比如一个User有id,name,email和 address这4个字段,但是address字段很少用,于是ORM只读取前3个字段,直到调用User的getAddress()方法时,才去数据库 中读取address的值。这个功能显然不能通过User的get/set完成,因此,ORM需要采用某种方式生成一个User类的子类,并且覆写get /set方法,这样,才能在调用get方法时有机会从数据库中读取。类似的对User的修改检测也是这样实现的。

    两种增强的方式

    ORM为我们自己的JavaBean实现子类的方法很多,这个过程简单称之为“增强”,基本上有两种方法:Hibernate使用CGLIB在加载 我们的User类时动态创建了一个子类,而JDO则要求编译完User类后再利用它提供的工具对User类进行改造,以便实现JDO需要的各种接口。请注意:就是这种极其变态的设计导致了使用JDO的极大困难,在我们编译完源码后,还需要额外执行一个增强命令,或者额外编写Ant任务,极大地影响了快速开发和单元测试,所以,凡是采用静态生成持久类的ORM,要在第一时间直接排除。





相关内容

• 如何高效使用JavaEEORM框架 (2011/10/16 18:05:25)
• 用Java或Jsp向数据库存取二进制图片 (2011/10/16 18:05:25)
• 专家和您一起谈谈java加壳的问题 (2011/10/16 18:05:24)
• 利用HSQLDB进行Hibernate单元测试(3)_3 (2011/10/16 18:05:23)
• 利用HSQLDB进行Hibernate单元测试(2)_2 (2011/10/16 18:05:22)
• 利用HSQLDB进行Hibernate单元测试 (2011/10/16 18:05:22)
• 详谈基于JSON的高级AJAX开发技术(3)_3 (2011/10/16 18:05:20)
• 详谈基于JSON的高级AJAX开发技术(2)_2 (2011/10/16 18:05:20)
• 详谈基于JSON的高级AJAX开发技术 (2011/10/16 18:05:19)
• 专家释疑:轻松提高Java代码的性能(2)_2 (2011/10/16 18:05:18)



热门栏目


特别声明


最新资讯
热讯排行


关于我们 | 广告服务 | 联系我们 | 合作媒体 | 意见反馈 | 使用条款 | 隐私权声明 | 版权声明 | 站点地图

      Copyright © 2012 Phontol. All Rights Reserved. 京ICP备07004242号