文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发JavaJAVA使用XML作为持久存储介质实现方法
精品推荐
特别推荐
·实例讲解:Java中的SOAP技术
·Java语言出现的背景 影响及前景
·Java精华积累:初学者都应该搞懂的问题
·Java多媒体框架设计自动播放机实例详解
·如何有效防止Java程序源码被人偷窥?
·Cell插件在J2EE系统中的应用
·初学者想学Hibernate,初级基础教程
·Java语言实现支持视频点播的WEB服务器
·关于Java编程的中文问题的几条分析原则
·确保J2ME无线移动商业应用程序的安全性
·Java开源技术:Eclipse的使用技巧详解
·新手入门:Java中的修饰词使用方法总结
·JAVA开发者应该去的20个英文网站
·使用JDBC创建数据库访问程序
·JDK的命令详解
·Java学习从入门到精通(附FAQ)
·Tomcat性能调整
·JSF:Java中面向Web开发的生旦净末丑
·对Java语言入门初学者的一些建议
·Java技术的新方向
热点TOP10
·Java图形用户界面设计
·在桌面应用中使用JAVA DB
·3D编程指南第一部分:快速进入移动JAVA 3D编程世界
·java swing的拖放例子
·用Java编写的记事本程序(1)
·用Java编写的记事本程序(3)
·JasperReport经验谈
·图解JBuilderX安装与实践
·用java编写的小游戏源代码分析
·struts+spring+ibatis轻量级J2EE开发
·单源点最短路径Dijkstra算法的JAVA实现
·实例讲解:Java中的SOAP技术
·初学者想学Hibernate,初级基础教程
·中国农历二百年算法及年历程序分析一
·Java语言出现的背景 影响及前景
·用Java实现SMTP服务器
·Java Applet 入门第三天
·用Java编写的记事本程序(2)
·Java学习从入门到精通(附FAQ)
·通过JCA实现企业级应用程序的“即插即用”

JAVA使用XML作为持久存储介质实现方法

日期:2007年9月5日 作者: 查看:[大字体 中字体 小字体]


对一些需要将数据持久化的小型程序中,传统的关系型数据库显得庞大而不实用,OO数据库有一个学习曲线的问题,而使用XML是一种较好的选择.本文将就设计一个合理的XML持久化的解决方案进行探讨.

使用XML作为持久层解决方案的,它的基本功能要有:

1.对象的CRUD功能(本例中基本对象是Member类).

2.保证线程安全,对桌面程序和Web程序都一样适用.

3.有缓存,在存储介质即XML文件突然丢失的情况下还能有效工作.

本例采用了MemberService和MemberPersistence两个类来协作完成这些功能.

MemberService是业务层和持久层之间的桥梁,用于对Member对象的CRUD操作,内置一个hashtable来缓存Member对象,即使文件突然丢失,缓存中的数据也不会被影响.它内置一个MemberPersistence成员来完成与持久介质的交互.

实现添加,删除,更新的三个函数add(),delete(),update()都用lockObj实现了同步,这样就无需担心线程安全问题.其它函数对members成员没有修改,故不需要实现同步.

try{
memberPersistence.add(member);
members.put(member.getId(), member);
return true;
}
catch(XmlFileWriteException ex){
   System.out.println("Member:" + member.getId() + " add error!");
   return false;
}

当MemberPersistence添加对象成功后,这个对象才会被添加到members中,这样保证了缓存和实际数据的同步;如果颠倒一下顺序,那末MemberPersistence添加对象不成功时,出现XmlFileWriteException异常,这是还需要在catch中删除刚才添加的对象,这样做人为加大了程序的复杂度,不如上面的做法简单高效.

关于查询函数的做法不明白的请见 http://www.blogjava.net/sitinspring/archive/2007/06/05/122119.html 中形式三.

下面是MemberService类的全部代码:

package com.sitinpsring.service;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import com.sitinpsring.domain.Member;
import com.sitinpsring.domain.MemberFilter;
import com.sitinpsring.exception.XmlFileReadException;
import com.sitinpsring.exception.XmlFileWriteException;
import com.sitinpsring.persistence.MemberPersistence;
public class MemberService {
private static Hashtable<String, Member> members;
private static MemberPersistence memberPersistence;
private static final Object lockObj = new Object();
static {
try {
memberPersistence = new MemberPersistence("member.xml");
members = memberPersistence.loadMemberFromFile();
} catch (XmlFileReadException ex) {
System.out.println("Can’t read the file:member.xml");
}catch (XmlFileWriteException ex) {
System.out.println("Can’t write to the file:member.xml");
}
}
public MemberService() {
}
public boolean hasMember(String id) {
return members.containsKey(id);
}
public boolean hasMember(Member member) {
return hasMember(member.getId());
}
public boolean add(Member member) {
if (hasMember(member)) {
System.out.println("Member:" + member.getId() + " has been exist!");

[1] [2] [3] [4] 下一页 




上一篇:JSP中调用SQL Server存储过程实例讲解

下一篇:新手学堂:Linux操作系统安全性能检查笔记

JAVA使用XML作为持久存储介质实现方法 相关文章:
·GHOST使用方法(图解)
·女性自慰方法大搜查
·qq空间皮肤背景代码:QQ空间不用Q币更换主页皮肤方法
·Vista系统使用技巧总结
·为什么iexplore.exe在打开网页时CPU使用会100%?
·QQ挂号升级方法
·《拳皇2002》隐藏人物出现方法 - 游戏秘籍
·电脑提速的新方法
·《混乱军团》初期获得死亡魔魂方法
·男性自慰的几种方法
JAVA使用XML作为持久存储介质实现方法 相关软件:
·黑客视频教程 VMware虚拟机的安装和使用
·黑客视频教程-灰鸽子远控使用教程
·FLASH 8中文使用手册
·使用GPMC随心所欲管理组策略
·Adobe Photoshop CS 2 简体中文使用指南
·Auto CAD R14高级使用教程
·Thinking In Java 英文版
·Microsoft Visio 2000 完全使用手册
·TCP-IP详解卷2:实现
·Linux 系统命令及其使用详解(大全)

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot