JAVAME的RMS通用持久化框架

在写JAVAME程序的时候,我们经常需要保存一些数据到手机里面,也经常希 望能把对象也保存到手机里面,但是JAVAME里面没有反射机制,也没有 java.io.Serializable接口,所以没有序列化的机制,要保存对象的话,就得自 己动手了。

在JAVAME中,程序的数据保存的地方,无外乎两种,一种是把数据保存在RMS 里面,这是所有的JAVAME的手机都支持的,还有一种就是把数据保存在手机的文 件系统里面,这个不是所有手机都能支持的,只有支持JSR075的手机,才支持把 数据保存在文件系统里面,并且如果你的程序没有经过签名的话,你每次保存或 者读取,手机都会弹出恼人的提示,是否允许程序访问文件系统。所在我一般都 是把数据存在RMS里面,因为读写RMS是安全的,并且也是不需要手机提示的。因 为我们的RMS数据是存在一个特殊的地方。但是JAVAME的RMS功能非常底层,为了 保存一些数据,我们必须和byte[]打交道,所以我就产生了,在此之前封装一层 自己的程序的想法,这样封装好以后,使用起来就非常方便了。只要实现了相关 接口,就可以享受到比较易用的方法了。

此框架总共包括了四个类,分别如下:

Serializable类,它是一个接口,类似于JAVASE里面的Serializable接口, 唯一不同的就是,JAVASE里面的接口是一个空接口,只做标记用的,而这里的这 个接口是有方法需要实现的。

Lazy类,它也是一个接口,它定义了一些方法,如果你的对象比较大,需要 惰性加载的时候,可以实现此接口,并且此接口是Serializable接口的子类,也 就是说实现了Lazy接口,你就相当于实现了Serializable接口。

RMSUtil类,此类是一个工具类,用于统一进行RMS的相关操作,也是此框架 的核心类。

RecordFetcher类,也是一个接口,它继承了RecordComparator, RecordFilter接口,在取数据的时候,需要用到它。

好了,下面我们就开始看代码吧。

 1 /*
  2  * To change this template, choose Tools | Templates
  3  * and open the template in the editor.
  4  */
  5 package com.hadeslee.mobile.rms;
  6
  7 import java.io.IOException;
  8
  9 /**
10  * 一个可自己串行化的类所要实现的接口
11  * @author hadeslee
12  */
13 public interface Serializable {
14
15     /**
16      * 把自己编码成字节数组的格式
17      * @return 字节数组
18      */
19     public byte[] serialize() throws IOException;
20
21     /**
22      * 把一个对象用此字节数组进行重装
23      * @param data 字节数组
24      */
25     public void unSerialize(byte[] data) throws IOException;
26
27     /**
28      * 设置此对象序列化后对应的存储对象的ID
29      * @param id ID
30      */
31     public void setId(int id);
32
33     /**
34      * 得到此对象序列化后的ID
35      * 此方法唯有在反序列化后的对象上调用才有效
36      * 如果一个对象是没有序列化的,那么它的ID是-1;
37      * @return ID
38      */
39     public int getId();
40 }
41
  1 /*
  2  * To change this template, choose Tools | Templates
  3  * and open the template in the editor.
  4  */
  5 package com.hadeslee.mobile.rms;
  6
  7 import java.io.IOException;
  8
  9 /**
10  * 可以延迟加载的对象必须要实现的接口
11  * @author binfeng.li
12  */
13 public interface Lazy extends Serializable {
14
15     /**
16      * 实现此接口的类要实现的方法
17      * 可以用于延迟加载某些属性。比如
18      * get("ImgData"),get("fullImage")..等等
19      * 由于J2ME不支持注释也不支持反射,所以只能以
20      * 此种方法来进行模拟了
21      * 此方法是RMSUtil要存对象的时候调用的,这样就可以把
22      * 一个对象的不同部份存到不同的RMS里面去了
23      * @param key 要得到的某性的键
24      * @return 其对应的值
25      * @throws IOException
26      */
27     public byte[] getAttach(Object key)throws IOException;
28
29     /**
30      * 当把某个附属的对象保存进去以后,所要调用的
31      * 方法,此方法告诉主体,它的那个附件被保存后
32      * 在RMS里面对应的ID是多少
33      * @param key
34      * @param id
35      */
36     public void savedAttach(Object key, int id);
37
38     /**
39      * 得到此对象所支持的所有的key的数组
40      * @return KEY的数组,不能为NULL
41      */
42     public Object[] getAttachKeys();
43
44     /**
45      * 此对象的附属对象所存的RMS的名字
46      * @return RMS的名字
47      */
48     public String getNameOfAttachRMS();
49 }
50

时间: 2024-09-15 05:08:41

JAVAME的RMS通用持久化框架的相关文章

Android通用流行框架大全【整理】_Android

Android通用流行框架大全 1. 缓存 DiskLruCacheJava实现基于LRU的磁盘缓存 2.图片加载 Android Universal Image Loader一个强大的加载,缓存,展示图片的库Picasso一个强大的图片下载与缓存的库Fresco一个用于管理图像和他们使用的内存的库Glide一个图片加载和缓存的库 3. 图片处理 Picasso-transformations一个为Picasso提供多种图片变换的库Glide-transformations一个为Glide提供多

我的Android进阶之旅------>Android通用流行框架大全

Android通用流行框架大全 缓存 图片加载 图片处理 网络请求 网络解析 数据库 依赖注入 图表 后台处理 事件总线 响应式编程 Log框架 测试框架 调试框架 性能优化 本文转载于lavor的博客:https://segmentfault.com/a/1190000005073746 Android通用流行框架大全 1. 缓存 名称 描述 DiskLruCache Java实现基于LRU的磁盘缓存 2.图片加载 名称 描述 Android Universal Image Loader 一个

Android通用流行框架大全【整理】

Android通用流行框架大全 1. 缓存 DiskLruCacheJava实现基于LRU的磁盘缓存 2.图片加载 Android Universal Image Loader一个强大的加载,缓存,展示图片的库Picasso一个强大的图片下载与缓存的库Fresco一个用于管理图像和他们使用的内存的库Glide一个图片加载和缓存的库 3. 图片处理 Picasso-transformations一个为Picasso提供多种图片变换的库Glide-transformations一个为Glide提供多

用J2ME的通用联网框架开发联网的应用程序

程序 尽管目前的无线网络不够理想,手机联网还是给我们开发人员不小的震撼的.毕竟这真的 是件神奇的事情,不是吗?本文将讲述如何应用J2ME平台中的通用联网框架开发联网的应用 程序. 首先,必须说明一点:MIDP中规定,任何移动信息设备都必须提供通过http协议的支 持,而像其他的通信方式例如socket是设备相关的.有些手机会支持,有些则不支持.这里只 大概的说明一下http协议相关的内容,如果不了解这个方面的知识请参考http协议.在 javax.microedition.io里面是大量的接口,

VC设计分割视图通用创建框架

目前基于分割视图的应用开发十分流行,分割视图技术是在同一个框架窗口下同时显示多个视图的一项技术.运用分割视图,可以在较短时间内给用户更多的信息量,从而使得用户界面更加的友好,增强了软件的可操作性.本文提出一个分割视图的通用创建框架. 1.分割视图创建框架 分割视图的创建大体上分为两个步骤:其一是创建分割窗体:然后就是处理鼠标和键盘等消息. 1) 创建分割窗体 MFC提供分割窗体类CsplitterWnd,它提供了很多对于分割窗体操作的成员函数,每一个分割窗体都是一个CsplitterWnd的对象

采用Java 持久化框架:选择、时机和优缺点?

对于开发新软件系统来说,面向对象编程无疑是当今使用最为广泛的编程模式.由于商业数据的持久性需求,关系数据库管理系统(RDBMS)取得了最为广泛的应用.RDBMS 使用的是关系模型,它与软件系统中的域对象模型有所不同.使用面向对象编程语言开发软件系统并使用 RDBMS 来持久存储数据时,数据持久化框架将成为应用程序架构中非常关键和重要的组件,它们的作用是隐藏应用程序数据持久化的底层复杂性. 在过去的几年中,一些持久化框架得到了很好的发展,它们可帮助您管理对象关系映射和数据持久性需求.但是,根据需要

用J2ME的通用联网框架开发联网应用程序

手机联网给开发人员不小的震撼的.毕竟这真的是件神奇的事情,不是吗?本文将讲述如何应用J2ME平台中的通用联网框架开发联网的应用程序. 首先,必须说明一点:MIDP中规定,任何移动信息设备都必须提供通过http协议的支持,而像其他的通信方式例如socket是设备相关的.有些手机会支持,有些则不支持.这里只大概的说明一下http协议相关的内容,如果不了解这个方面的知识请参考http协议.在javax.microedition.io里面是大量的接口,只有一个connector类,当然在midp2.0里

介绍J2ME通用联网框架

通用联网框架在J2ME平台中扮演着十分重要的角色,如果没有它,我们写的应用程序对外人来说只能说"神秘",而应用了通用联网框架进行联网的程序就显得"神奇"了.本文将对通用联网框架进行整体的分析,具体的应用会在后续的文章详细讲述. Generic Connection Framework(以下简称GCF)是在CLDC中定义的,由于移动信息设备的资源受限特性,所以java.net和java.io包不适合在这里使用.现实世界中使用着各种各样的网络通信协议,这使得设计好这个框

终于开发完成的通用软件框架。请大家试试看,给予讨论。

问题描述 下载页面http://download.csdn.net/source/244821个人联系可以发信到generic_engine@hotmail.com 解决方案 解决方案二:mark解决方案三:看来大家都很忙啊,还是csdn人气不行了.这样说吧,这个通用框架将会为软件设计领域带来一场革命.不知感兴趣的人是否会多些?解决方案四:新开了一个SourceForge下载页,也可以在这里下载:http://sourceforge.net/projects/bos-code解决方案五:支持一下