从Rails的活动记录说说元数据编程

2008-02-23 09:17:55来源:互联网 阅读 ()

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

文章原题:跨越边界: 研究活动记录
作者是:Bruce Tate, 总裁, J2Life, LLC
原贴地址:http://www-128.ibm.com/developerworks/cn/java/j-cb03076/index.html?ca=dwcn-newsletter-java
这篇文章分析的是Rails所用到的活动记录,ActiveRecord的技术。活动记录要做的大概跟O/R mapping差不多。不过O/R mapping是基于映射的,就是把类和数据库对应起来,而活动记录是基于包装,wrappping的,就是直接生成一些包装数据库表的类。ActiveRecord用到了Ruby当中的反射和元数据编程技术,简单的来说,就是当你声明一个类继承于ActiveRecord的Base类时,那么在运行时,这个继承事件就会发送到Base类当中,Base类就能够做一些数据库反射之类的操作,获得这个子类所要包装的表,然后再动态的修改子类的实现,为他添加对应的属性和方法。也就是在O/R mapping当中,我们所要定义的属性和方法都能够通过这种元数据编程方式实现。这样做的好处就是,ActiveRecord的子类非常简单,如果你不需要特殊的操作,那么一句声明语句,声明你是扩展了Base类就可以完全搞定。
这种技术还是很有意思的,不过归根结底,这个技术也是用到了Ruby的反射和元数据编程,可惜元数据的能力就是Java所缺乏的,Java不提供这种动态的修改类代码的能力实在是丧失了不少有趣的应用。不过,还是有一些曲线救国的方式来大致达到这个效果,就是直接去hack虚拟机,在类装载的时候直接修改classfile的bytecode,这个方法估计以后会被用到的越来越多。

上一篇: 使用Fileupload上传组件
下一篇: Roller2.1的配置手册

标签:

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

上一篇:通过socket连接传递java对象(对象序列化)

下一篇:使用Fileupload上传组件