设为首页收藏本站language→→ 语言切换

鸿鹄论坛

 找回密码
 论坛注册

QQ登录

先注册再绑定QQ

查看: 1527|回复: 0
收起左侧

Java基础:JavaME的RMS通用持久化框架

[复制链接]
发表于 2010-2-20 14:46:39 | 显示全部楼层 |阅读模式
<p >在写JAVAME程序的时候,我们经常需要保存一些数据到手机里面,也经常希望能把对象也保存到手机里面,但是JAVAME里面没有反射机制,也没有java.io.Serializable接口,所以没有序列化的机制,要保存对象的话,就得自己动手了。<p >在JAVAME中,程序的数据保存的地方,无外乎两种,一种是把数据保存在RMS里面,这是所有的JAVAME的手机都支持的,还有一种就是把数据保存在手机的文件系统里面,这个不是所有手机都能支持的,只有支持JSR075的手机,才支持把数据保存在文件系统里面,并且如果你的程序没有经过签名的话,你每次保存或者读取,手机都会弹出恼人的提示,是否允许程序访问文件系统。所在我一般都是把数据存在RMS里面,因为读写RMS是安全的,并且也是不需要手机提示的。因为我们的RMS数据是存在一个特殊的地方。但是JAVAME的RMS功能非常底层,为了保存一些数据,我们必须和byte[]打交道,所以我就产生了,在此之前封装一层自己的程序的想法,这样封装好以后,使用起来就非常方便了。只要实现了相关接口,就可以享受到比较易用的方法了。<p >此框架总共包括了四个类,分别如下:Serializable类,它是一个接口,类似于JAVASE里面的Serializable接口,唯一不同的就是,JAVASE里面的接口是一个空接口,只做标记用的,而这里的这个接口是有方法需要实现的。<p >Lazy类,它也是一个接口,它定义了一些方法,如果你的对象比较大,需要惰性加载的时候,可以实现此接口,并且此接口是Serializable接口的子类,也就是说实现了Lazy接口,你就相当于实现了Serializable接口。<p >RMSUtil类,此类是一个工具类,用于统一进行RMS的相关操作,也是此框架的核心类。<p >RecordFetcher类,也是一个接口,它继承了RecordComparator, RecordFilter接口,在取数据的时候,需要用到它。<p >好了,下面我们就开始看代码吧。<p >由于代码过多,在这里只给大家提供源代码的下载连接:[<u>点击下载</u>]<p >相信看完代码以后,大家应该知道如何使用它吧。如果有需要持久化的类,那么就需要实现Serializable接口,然后只要调用RMSUtil.insertObject()就可以了,同理,查找也是一样的,你可以查找同一个类的一系列对象,也可以自己定义记录查询器,在里面设置查询条件。<p >目前JAVAME的持久化框架,也有用其它的方法实现的,比如动态插入代码的方法,也就是你在写好了JAVAME的代码以后,在编译的过程中,它自动帮你加上相应的方法,我看了一个他们的源码,其实也就是它们自己帮你实现了一个相当于Serializable接口,我觉得这样不好的地方在于,它会为你的类添加方法,万一你的类里面原来就有那个方法的时候,那就会出现不可意料的情况了,还有,我觉得自己的数据还是自己一个一个把它写出来,这样心里更踏实一些。我一直都认为,封装得有一个度,不能过度的封装,过度封装表面上看是编码更方便了,但是写的时候,自己心里也更没底了,因为你不知道别人的代码都做了一些什么。因为别人的代码做的事情太多了。呵呵,纯属个人意见。<p >大家如果有什么自己的看法,欢迎留言。<p >还有,此代码用到了我的另外一个通用框架,那就是LOG框架,所以如果直接下载的话,可能会编译不过了,只要注释掉LogManager的调用就可以了。LOG框架的说明点击这里,这个LOG框架现在正在改动中,以使它更好用,更没有侵入性。<p >Netbeans项目工程打包<u>下载</u>,<u>请点击这里</u>。此工程中还有LOG框架在里面。<p >< align=right></P><p align="center"></p></p>
您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2024-11-25 19:24 , Processed in 0.054975 second(s), 9 queries , Redis On.  

  Powered by Discuz!

  © 2001-2024 HH010.COM

快速回复 返回顶部 返回列表