`

手把手教你写ORM(四)

阅读更多
现在中午不睡一会儿就头晕。

前一篇有人留言说为什么不写web.config?我个人非常反对庞大的web.config文件,可能其根源就在于互联星空系统的巨大的配置和它带来的混乱,自己实现一个小巧灵活的机制是我比较喜欢的,这样可以降低系统的侵入性,也可以方便我改成其他语言的版本。

这里我们来给刚才的Resource类加一个壳,因为我们毕竟不能用绝对的Path去访问,我们需要一个通过类名就可以访问得到配置的方式。

在加这个壳之前我们先规划一下配置文件,我们这里需要两种配置文件,一个是配置数据库连接的,一种是配置每个类的操作的,前边说过了,对输入和结果的映射在类的Attribute里完成,这样子配置每个类的配置文件就可以相当的简单了

数据库连接配置文件:
<?xml version="1.0" encoding="utf-8" ?>
<config>
  
<session name="test">
    
<connectionstring>Data Source=.\SQLEXPRESS;AttachDbFilename="C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\test.mdf";Integrated Security=True;Connect Timeout=30;User Instance=True</connectionstring>
    
<assambly>Alexander.Xbase.SqlExec</assambly>
    
<provider>Alexander.Xbase.SqlExec.Exec</provider>
    
<configbase>D:\MyDocuments\Visual Studio 2005\Projects\Alexander\Xbase\MenTest\bin\Debug\</configbase>
  
</session>
</config>

每个Session配置一个数据库连接,configbase是用来指定这个连接的配置文件所在的目录,以后获取每个类的配置文件就在这个配置项的值所在的目录里面。数据库配置文件在System.AppDomain.CurrentDomain.BaseDirectory里面搜索,不用配置


每个类的配置文件:
<?xml version="1.0" encoding="utf-8" ?>
<class>
    
<sql name="insert">insert into tb (aaa,bbb) values (#aaa,#bbb)</sql>
    
<sql name="getall" cache="true">select * from tb</sql>
</class>

Sql节配置SQL指令,参数用#开头,属性Cache指示这个查询是否被缓存

我们需要两个类来分别表示这两种配置文件来提供对其的访问方式。
对于数据库配置文件我们先提供一个类来表示其结构:
 1 public class SessionParameter
 2    {
 3        private string connectionstring;
 4
 5        public string Connectionstring
 6        {
 7            get return connectionstring; }
 8            set { connectionstring = value; }
 9        }

10        private string assambly;
11
12        public string Assambly
13        {
14            get return assambly; }
15            set { assambly = value; }
16        }

17        private string provider;
18
19        public string Provider
20        {
21            get return provider; }
22            set { provider = value; }
23        }

24        private string configbase;
25
26        public string Configbase
27        {
28            get return configbase; }
29            set { configbase = value; }
30        }

31    }

32}

然后通过下面的类来访问,这里我们统统使用Xpath来搜索节点。
    public class Sessions
    
{
        
private static string _configPath;
        
private static XmlDocument dat; 

        
static Sessions()
        
{
            _configPath 
= System.AppDomain.CurrentDomain.BaseDirectory + "xbase.xml";

        }


        
public SessionParameter GetSessionByName(string Name)
        
{
            Resource res 
= new Resource(_configPath);
            dat 
= new XmlDocument();
            dat.LoadXml(res.Config[_configPath]);
            
string xp1 = "/config/session[@name=\""+Name+"\"]/connectionstring";
            
string xp2 = "/config/session[@name=\"" + Name + "\"]/assambly";
            
string xp3 = "/config/session[@name=\"" + Name + "\"]/provider";
            
string xp4 = "/config/session[@name=\"" + Name + "\"]/configbase";
            SessionParameter sp 
= new SessionParameter();
            sp.Connectionstring 
= dat.SelectSingleNode(xp1).InnerText;
            sp.Assambly 
= dat.SelectSingleNode(xp2).InnerText.Trim();
            sp.Provider 
= dat.SelectSingleNode(xp3).InnerText.Trim();
            sp.Configbase 
= dat.SelectSingleNode(xp4).InnerText.Trim();
            
return sp;
        }

    }

这个样子就可以通过Session sec=Session.GetSessionByName(Name)来获取一个数据库配置文件了。
实现读取每个类的配置文件的方式相同,这里省略了,下来自己写

这里我们实现了包装读取配置的操作的类,接下来我们来看,如何实现插件的方式动态提供数据库操作组件

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

相关推荐

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

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

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

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

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

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

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

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

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

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

    手把手教你SSH2整合

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

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

    Struts提供了MVC设计模式的实现,Spring则负责管理对象及其依赖关系,而Hibernate则是用于简化数据库交互的ORM(对象关系映射)工具。本教程将详细讲解如何在Myeclipse环境下搭建SSH框架。 首先,创建一个新的Web ...

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

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

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

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

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

    自动生成Hibernate_ORM_2.gif`:这些可能是演示如何使用MyEclipse的Hibernate插件自动生成ORM映射的图片教程。 - `3.1.添加Spring.gif`、`4.2.添加Hibernate.gif`、`2.3.创建Action.gif`等:这些图解文件分别展示了...

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

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

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

    Struts、Spring和Hibernate是Java Web开发中的三大框架,它们各自负责不同的职责,组合使用可以构建出高效、灵活的企业级应用程序。...希望这个教程能帮助你开启Java Web开发的大门,为你的编程事业奠定坚实的基础。

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

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

    手把手教你如何用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或注解方式配置和映射原生...

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

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

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

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

    Hibernate手把手教学

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

Global site tag (gtag.js) - Google Analytics