您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > iBATIS In Action:iBATIS的安装和配置
iBATISInAction:iBATIS的安装和配置上一篇:iBATISInAction:什么是iBATIS(2);译注:本章讲解的是iBATIS的安装和配置,原书使用的是Java版本,与.NET版本的安装、配置过程不尽相同,因此这里直接就.NET版本进行说明。主要参考的是iBATIS官方的DataMapperGuide文档,本章的配置主要针对DataMapper,DataAccess的配置将出现在第10章。iBATIS的安装过程快速而简单。它是一个类库,而不是应用程序,所以实际上并不需要安装,但要在应用程序中使用它还是要经过几个步骤。如果您熟悉C#和ADO.NET,那么可能需要好好阅读本章为下面的一两章做好准备。首先,我们提供了安装和配置过程的概览,然后是该过程的详细说明。要获取iBATIS,您有两种选择。可以下载二进制发行包,然后解压缩到一个目录中;也可以从Subversion资源库中获取一份源代码副本,手动生成它。不管采用哪种方式,最终得到的是相同的一组文件。在得到iBATIS发行包之后,只要将需要的dll文件添加到应用程序引用中即可。3.1获取iBATIS发行包3.1.1二进制发行包这是最快速、简单的方式。iBATIS已经预先生成好了,您只需要下载,解压缩,然后开始使用。注意:iBATIS的二进制发行包可以在下载(这里可以下载到dll文件,源代码,实例和文档)。3.1.2由源代码生成如果您有兴趣增强框架,修复bug,或者只是想通过亲自编译来了解您所得到的内容,那就可以从Subversion资源库获取一份副本,由源代码生成。第12章中我们将深入了解扩展iBATIS框架的细节,因此本节内容会比较简单,不过这些也足够您开始使用了。注意:这里提到的Subversion(SVN)资源库是所有新的Apache项目使用的版本控制系统。Subversion是CVS的替代品。SVN的目的在于提供一个环境,使得在框架发生变化时,不用担心丢失源代码(因为每个开发人员都有一份副本,同时服务器上也存有多份拷贝)。如果您希望更多地了解Subversion,可以访问它的主页。iBATIS的Subversion资源库地址为:。3.2发行包的内容如果您获取的是源代码,那么会得到一个VS解决方案和几个C#项目。在source文件夹下有8个文件夹,构成了iBATIS.NET发行包。它们是:FolderNameDescriptionExternal-BiniBATIS项目所需的依赖项程序集。IBatisNet.Common该程序集包含了DataAccess和DataMapper所共用的类。IBatisNet.Common.Logging.Log4NetLog4Net工厂适配器类。IBatisNet.Common.TestIBatisNet.Common的测试项目,可用于NUnit。IBatisNet.DataAccessDataAccessObjects框架。IBatisNet.DataAccess.Extensions包含一个C#项目,用于对DataAccess框架的扩展,如对NHibernate的支持。IBatisNet.DataAccess.TestDataAccess框架的测试项目,可用于NUnit。IBatisNet.DataMapperDataMapper框架。iBatisNet.DataMapper.TestDataMapper的测试项目,可用于NUnit。您可以加载IBatisNet.2005.sln,生成所需的程序集。解决方案中有7个项目,应当能够顺利通过编译。我们需要的程序集位于\IBatisNet.DataMapper\bin\Debug下。创建的程序集是:oIBatisNet.Common.dlloIBatisNet.DataMapper.dllDataMapper有一个外部依赖项:oCastle.DynamicProxy.dll(用于创建代理)该dll在External-Bin文件夹中。3.3依赖项(略)3.4将iBATIS添加到应用程序切换到您自己的应用程序,打开要使用DataMapper的项目。取决于解决方案的组织方式,项目有可能是Windows或Web应用程序,也可能是类库项目。这样可能需要项目添加一到两个引用:oiBatisNet.DataMapper.dlloiBatisNet.DataAccess.dll(可选的)oiBatisNet.Common.dll(隐含引用)oCastle.DynamicProxy.dll(隐含引用)如果您使用的Mapper单例(singleton),那么唯一需要引用的是DataMapper程序集。IBatisNet.Common和Castle.DynamicProxy在运行时是需要的,但VS.NET会帮您解析这些依赖关系。如果使用DataAccessObjects框架,那么还需要添加对DataAccess的引用。如果您已经按前面说过的方式生成了iBatisNet,那么需要的三个程序集(IBatisNet.DataMapper.dll,IBatisNet.Common.dll,Castle.DynamicProxy.dll)都在DataMapper项目的bin\Debug目录下。3.4.1添加XML文件项在添加了对程序集的引用后,下一步是向项目(可能是Windows,Web应用程序,类库或测试项目)中添加三种类型的XML文件。这些文件是:oproviders.config–DataMapper在该文件中查找您选择的数据库Provider的定义。oSqlMap.xml–包含了SQL查询的映射文件。您的项目中会包换一个或多个这种文件,其名称是自定义的,如Account.xml或Product.xml。oSqlMap.config–DataMapper配置文件,用于指定SqlMap.xml和providers.config文件的位置。同时还定义了其它的DataMapper配置选项,如缓存。我们需要为项目中的每个数据源编写一个SqlMap.config文件。不难理解,SqlMap.config和providers.config文件应放在DataMapper运行时可以找到的地方。这两个文件的默认位置取决于项目的类型,如下表所示:Windows应用程序,类库,测试项目(使用NUnit或其它等价工具)二进制文件夹(如/bin/debug),.dll和app.config所在目录Web应用程序在程序根目录,即web.config所在处3.4.2与VS.NET集成每一个配置文件(SqlMap.config,SQL映射文件,providers.config)都与一个XMLSchema文件关联。这种关联的好处在于,可以对文档进行验证(在运行时完成),使用编辑器的特性如智能感知/内容自动完成。要在VS.NET的XML编辑器中的Schema和我们的配置文件之间建立关联,应该将Schema文件(SqlMap.xsd,SqlMapConfig.xsd,providers.xsd)添加到VS.NET项目或者VS.NET安装目录。显然第二种选择会让我们一劳永逸。VS.NET安装目录可能是:C:\ProgramFiles\MicrosoftVisualStudio8\Xml\Schemas(VS.NET2005)或C:\ProgramFiles\MicrosoftVisualStudio.NET2003\Common7\Packages\schemas\xml(VS.NET2003)或C:\ProgramFiles\MicrosoftVisualStudio.NET\Common7\Packages\schemas\xml(VS.NET2002)。将Schema文件注册到VS.NET后,我们就可以在VS.NET中享用智能感知和配置文档验证了。3.5iBATIS和ADO.NET对ADO.NET的深入讲解已经超出了本书的范围,但我们将从一个较高层次进行分析,以为本书的其它部分提供一个基础。微软的ADO.NET的API是.NET中数据库连接的标准。ADO.NET定义了一组接口,数据库提供商需要为其数据库产品提供接口的实现(Provider),否则,开发人员无法使用,人们认为提供商的封闭是应该避免的反模式(anti-pattern)行为。3.5.1释放ADO.NET资源在使用ADO.NET时,容易发生获取资源,然后却忘记了正确地释放资源的问题。垃圾回收进程最终可能会释放它们,但这需要时间,而且没有保证。如果这些资源没有释放掉,应用程序最终可能会耗尽资源,进而崩溃。iBATIS框架帮助开发人员管理这些资源,从而减轻了开发人员的负担。开发人员不再需要担心资源的分配和释放,而是关注于他们需要的数据。但是,如果愿意,开发人员仍然可以手动地管理这些资源。3.5.2SQL注入另一个常见的问题(在Web应用程序中更易出现)是SQL注入,它使得应用程序不以开发人员所期望的方式执行SQL。如果程序使用字符串拼接来构造SQL语句,但没有正确地过滤参数,恶意的用户传入的参数会改变查询的内容。考虑类似于select*fromproductwhereid=5这样的例子。如果这里的5直接来自用户的输入,然后同select*fromproductwhereid=拼接,那么用户可以输入5or1=1,从而改变了SQL语句的真实用意。如果用户输入的是5;deletefromorders,那就更糟了,SQL语句会乖乖地查询一条记录,然后将orders清空。灵活性也带来了风险,因此如果不正确地使用了iBATIS,我们的程序仍有可能会受到SQL注入的攻击。但是,iBATIS通过使用Parameter提高了程序受到此类攻击的难度(Parameter)。只有那些使用显式的SQL字符串置换语法的语句是有风险的。考虑下面这个例子,该语句接受动态的表名和列名:SELECT*FROM$TABLE_NAME$WHERE$COLUMN_NAME$=#VALUE#这种语句在某些情况下很灵活,也很有用,却易受到SQL注入的攻击,因此要慎重使用。这不是iBATIS的问题,这样的语句无论如何执行总会面临这种问题。因此对于那些动态构造的语句,如果会受用户输入的影响,一定要对用户的输入进行验证。3.5.3降低复杂性ADO.NET非常强大,同时也是层次很低的API。为了帮助您更好地理解iBATIS有哪些好处,我们做个比较。(请参看2.2节工作原理中的例子)3.6iBATIS的配置(continued)在第2章中,我们简要地浏览了iBATIS的配置(那个例子实在简单,如果您没有阅读那一节内容也不必担心)。在本节中,我们将创建SQLMap配置文件。这个文件是iBATIS的核心,如图3.1所示。图3.1描述了iBATIS的配置,其中SqlMapConfig文件是一切的核心。3.6.1SQLMap配置文件由图3.1可以清楚地看到,SQLMap配置文件(SqlMap.config)iBATIS配置的核心。从数据库连接到使用的SqlMap文件的相关配置都由此文件提供。注意:上面说的核心配置文件名称通常为SqlMap.config。尽管它也可以使用其它名称,我们在这里还是遵循约定。下面的代码清单演示了一个示例配置文件,我们将在后面的章节中进行讨论。?xmlversion=1.0encoding=utf-8?sqlMapConfigxmlns=:xsi=!--Optional--propertiesr
本文标题:iBATIS In Action:iBATIS的安装和配置
链接地址:https://www.777doc.com/doc-4377422 .html