`

手把手教你写ORM(三)

阅读更多
昨天处于晕死状态,少写了一个组件,还需要一个组件用来专门管理Cache的,这里说道为什么要分这么多组件,其实这是习惯问题,很多人喜欢写一个很大的DLL,不过我比较喜欢拆分,小粒度的项目比较好管理和单独测试,把用单元测试验证好了的小组件凑起来调试和写成一个巨大的DLL慢慢一行行的追踪代码,肯定是前者更加舒心和满足懒汉的要求。

之前说了,今天主要将实现Yourname.Config这个项目,这个项目用来管理所有的配置文件,把所有的配置文件Cache到内存,并且需要在配置文件更新的时候刷新内存中的配置数据。

这里如何在内存存储这些配置文件是小问题,用HashTable就能解决了,Key用文件的Path,Value就是文件的内容了。

这里我们建立一个Resource类,用来处理这些配置资源
 1class Resource
 2{
 3    private static HashTable _configfile=new HashTable();
 4    public HashTable Configs
 5    {
 6        get{return _configfile;}
 7    }

 8    public Resource(string Path)
 9    {
10        StreamReader readfile=new StreamReader(Path);
11        using(readfile)
12        {
13            _configfile.Add(Path,readfile.ReadToEnd());
14            readfile.Close();
15        }

16    }

17
18}

这里的代码已经具备了基本功能了,不过最好在Add前先检测以下项是否存在最好。
这样子,当我们去new Resource的时候一个配置文件就加载到了HashTable里面了。
这个时候我们不用每一次需要配置的时候都去读取文件,不过占用了内存,典型的空间换时间的方法。

不过现在还有一个问题,就是如果在运行的时候,如果,我们修改了配置文件的话,由于加载到了内存,我们的修改不会马上体现到程序里,必须重新启动程序才行,对于Web来说,重新启动IIS站点是没有用的,必须重起服务。

这是一个问题

怎么获取一个文件是否修改了呢?我们可以通过比对文件的最后修改时间的属性来解决。
在这里,我们在第一次加载一个配置文件的时候记录其最后修改时间,然后在以后每一次new的时候都去检查一次文件的最后修改时间和记录的是否相等,如果不相等,就说明文件被修改过了,于是就重新加载文件,这样子就能够实现即时刷新配置了

这里我们为了记录文件的最后修改时间,再添加一个HashTable,还是用Path作Key,Value就是文件的最后修改时间了

具体代码:
 1class Resource
 2{
 3    private static HashTable _configfile=new HashTable();
 4    private static HashTable _configtime=new HashTable();
 5    public HashTable Configs
 6    {
 7        get{return _configfile;}
 8    }

 9    public Resource(string Path)
10    {
11        if(!File(Path).GetLastEditTime().Equles((DateTime)_configtime[Path]))
12        {
13            StreamReader readfile=new StreamReader(Path); 
14            using(readfile)
15            {
16                _configfile.Add(Path,readfile.ReadToEnd());
17                readfile.Close();
18                _configtime.Add(Path,File(Path).GetLastEditTime());
19            }

20        }

21    }

22
23}

这里很多的判断阿容错阿这些我都没做,也没有用现成项目的现成源代码,都是些此文时现用记事本手写的,如果有错请见谅阿。

这里我们就可以通过  Resource rc=new Resource("xxx.xml"); rc.Configs["xx.xml"];来获取XML的配置内容了,但是这样子还不是最终的版本,我们需要通过类名就能获取他的配置,还有就是光有配置的XML还不行,我们还需要从XML里面分析出配置的内容才行,这些都是下一步我们来实现的东西

to be continue......
分享到:
评论

相关推荐

    struts spring hibernate ssh 三大框架集成详细步骤 手把手教你搭框架

    Hibernate是一个优秀的对象关系映射(ORM)框架,使得Java开发者可以方便地操作数据库。它通过配置文件将Java类与数据库表进行映射,简化了SQL的编写。在SSH中,Hibernate负责数据持久化,Spring通过SessionFactory...

    一个简单的JavaORM框架寂寞消遣之作可供学习参考只有几百行代码。

    Java ORM(Object-Relational Mapping)框架是一种将数据库关系数据与Java对象进行映射的技术,使得开发者可以在操作对象的同时,间接地对数据库进行操作。这个简单的Java ORM框架,名为“Potato ORM”,可能是作者...

    手把手教你写第一个NHibernate小程序.doc

    本文将带你一步步学习如何编写你的第一个NHibernate小程序,一个轻量级的对象关系映射(ORM)框架,它允许.NET开发者以面向对象的方式操作数据库。我们将涵盖从创建数据库、定义数据表到构建.NET类以及配置...

    手把手教你ajax的三层架构(含代码)

    在Web开发中,AJAX(Asynchronous JavaScript and XML)是一种...在实际开发中,你可以根据项目需求灵活调整这三层,例如使用前端框架(如React、Vue等)来增强表现层的功能,或者利用RESTful API来简化前后端交互。

    SSH入门教程(手把手教你)

    SSH入门教程:手把手教你整合Struts1.2、Spring和Hibernate SSH是Java开发中的一个经典技术栈,由Struts、Spring和Hibernate三个开源框架组成。本教程将引导初学者逐步了解并掌握这三个框架的整合,从而实现一个...

    手把手教你成为架构师课程资料包大放送

    在追求成为一位杰出的架构师的道路上,"手把手教你成为架构师课程资料包大放送" 提供了丰富的资源,旨在帮助你深入理解和掌握软件架构设计的核心概念。这个资料包特别关注Android架构组件和MyBatis框架,这些都是...

    手把手教你SSH2整合

    通过这个"手把手教你SSH2整合"的项目实例,你可以深入理解这三大框架如何协同工作,提高开发效率,以及如何解决在实际开发中可能出现的问题。实践中,你将学到如何配置和优化SSH2,以及如何在项目中应用最佳实践。这...

    图文并茂手把手教你搭建SSH框架(教程)

    SSH框架,全称为Struts+Hibernate+Spring,是Java Web开发中常见的三大开源框架的集成。Struts提供了MVC设计模式的实现,Spring则负责管理对象及其依赖关系,而Hibernate则是用于简化数据库交互的ORM(对象关系映射...

    手把手教你开发ejb3.0第一章

    在"手把手教你开发ejb3.0第一章"中,我们将深入探讨EJB 3.0的基础知识和核心概念。 1. **EJB 3.0概述** - **简化API**:EJB 3.0引入了注解(Annotations),大大减少了XML配置,使得部署和开发更简单。 - **实体...

    手把手教ssh,对于初学者有用啊

    这个“手把手教SSH”教程适合初学者,旨在帮助他们理解并掌握这三大框架的核心概念和使用方法。 首先,Struts是一个基于MVC(Model-View-Controller)设计模式的开源Web应用框架,它的主要目标是提供一套开发Web...

    手把手教你用Myeclipse新建SSH项目(spring,struts,hibernate).zip

    - `使用Myeclipse快速整合spring,struts,hibernate.doc`:这可能是一个详细的文档,指导如何在MyEclipse中一步步集成这三个框架。 - `5.1.自动生成Hibernate_ORM.gif`、`5.2.自动生成Hibernate_ORM_2.gif`:这些可能...

    手把手教你免费获取正版 IntelliJ IDEA.docx

    这篇文档旨在指导你如何免费且合法地获取并使用正版的IntelliJ IDEA。 首先,IntelliJ IDEA提供了一个开源免费协议,详细规定在https://www.jetbrains.com/community/opensource/。根据协议,如果你是一个开源项目...

    MyEclipse开发Struts+Spring+Hibernate入门(手把手教你)

    Struts、Spring和Hibernate是Java Web开发中的三大框架,它们各自负责不同的职责,组合使用可以构建出高效、灵活的企业级应用程序。在这个"MyEclipse开发Struts+Spring+Hibernate入门"教程中,我们将深入理解这三个...

    手把手教你如何用SSH框架实现留言板

    3. **Hibernate**:是一个对象关系映射(ORM)工具,它允许开发者使用Java对象来操作数据库,减少了对SQL的直接依赖。Hibernate通过配置文件(如hibernate.cfg.xml)来定义对象和表之间的映射关系。 在实现留言板的...

    SpringMVC精品资源--手把手教你整合最简洁的SSM框架:SpringMVC + Spring + MyBatis.zip

    Spring还提供了大量的模块,如Spring JDBC、Spring ORM支持MyBatis等,方便与各种数据库进行交互。 **MyBatis** MyBatis是一个轻量级的持久层框架,它将SQL语句与Java代码分离,通过XML或注解方式配置和映射原生...

    手把手教您搭建SSH框架环境

    Hibernate是一个对象关系映射(ORM)框架,简化了Java应用与数据库之间的交互,允许开发者用面向对象的方式来操作数据库。 【SSH框架环境搭建步骤】 1. **数据库创建** - 代码创建:通过SQL语句创建名为`demouse`...

    教你如何使用 django + vuejs 快速构建项目.docx

    使用 DjangoAdmin,可以快速生成 CRUD 操作的界面,并且可以通过 ORM 生成的 API 来做到定制化的更新。 VueJS 的单文件组件 VueJS 的单文件组件允许将模板、脚本和样式写在一个文件中,使得开发更加方便、快速。...

    Hibernate手把手教学

    **Hibernate手把手教学** 在IT领域,ORM(Object-Relational Mapping)框架是数据库操作的重要工具,而Hibernate作为Java中最受欢迎的ORM框架之一,深受开发者喜爱。本教学资源源自厦门理工学院软件学院的一位资深...

Global site tag (gtag.js) - Google Analytics