`
izuoyan
  • 浏览: 9216806 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
阅读更多

IbatisNet(以下简称Ibatis)包括DataAccess和DataMapper两部分。整个Solution包括三个主项目:

IBatisNet.Common
IBatisNet.DataAccess
IBatisNet.DataMapper

和一个辅助项目:IBatisNet.Common.Logging.Log4Net。

Common项目是DataAccess和DataMapper的公共基础,提供通用功能和公共服务。DataAccess是DAO框架,DataMapper是SqlMap映射框架。Common.Logging.Log4Net是对log4net日志服务的代理,利用log4net日志框架产生和输出日志。

二.各项目介绍
Commons

根目录:
DataSource类封装了数据源信息,包括数据源的标志名Name,数据源的提供者Provider和数据源所代表的连接字符串ConnectionString。DataSource类有下列属性:
[Serializable]
[XmlRoot("dataSource", Namespace="http://ibatis.apache.org/dataMapper")]
类中的Property(属性)也有[XmlAttribute]属性(Attribute),例如public string ConnectionString属性有[XmlAttribute("connectionString")]。
所以类可被反序列化为xml文件,也可以直接通过XmlNode解析为对象。DataSourceDeSerializer类就是从XmlNode中读取信息并生成DataSource类。
DataSource属性和配置文件中的dataSource节点对应。
Provider类封装了data provider(数据提供者)信息,例如程序集名称AssemblyName,是否是默认提供者IsDefault,ConnectionClass,DataAdapterClass等提供者程序的信息。并提供了IDbCommand GetCommand(),IDbDataAdapter GetDataAdapter()等方法,为上层应用隐藏了具体驱动(数据提供程序)的细节。与DataSource一样Provider也是可以序列化为xml文件,并通过ProviderDeSerializer.cs中的ProviderDeSerializer类从XmlNode中构造Provider实例。
IDalSession类是Ibatis中的基础接口。封装了数据访问相关的会话信息,比如数据源,连接和事物对象。用于管理数据源相关信息,比如:
IDbCommand CreateCommand(CommandType commandType);

///
/// Create an IDataParameter
///
/// An IDataParameter.
IDataParameter CreateDataParameter();

///
/// Create a DataAdapter
///
/// The statement or stored procedure
/// used to select records in the data source.
/// An IDbDataAdapter.
IDbDataAdapter CreateDataAdapter(IDbCommand command);

///
/// Create a DataAdapter
///
/// An IDbDataAdapter.
IDbDataAdapter CreateDataAdapter();
连接管理的相关方法,比如:
///
/// Open a connection.
///
void OpenConnection();

///
/// Open a connection, on the specified connection string.
///
/// The connection string
void OpenConnection(string connectionString);

///
/// close a connection
///
void CloseConnection();
事务管理相关的方法,比如:
///
/// Begins a transaction on the current connection
/// with the specified IsolationLevel value.
///
/// The transaction isolation level for this connection.
/// Open a connection.
void BeginTransaction(bool openConnection, IsolationLevel isolationLevel);

///
/// Commit a transaction and close the associated connection
///
void CommitTransaction();

///
/// Commits the database transaction.
///
/// Close the connection
void CommitTransaction(bool closeConnection);

///
/// Rollbak a transaction and close the associated connection
///
void RollBackTransaction();

///
/// Rolls back a transaction from a pending state.
///
/// Close the connection
void RollBackTransaction(bool closeConnection);
等。

Exception目录:
Exception目录中的类定义了框架的异常类型。
IBatisNetException是框架基础类,其他框架异常都继承自它。
ConfigurationException类用于处理配置过程中出现的异常。
ForeignKeyException类用于代表外键异常和错误。
ProbeException类代表较表层的异常,通过该异常可以探究深层原因,也用于通过流节序列化并组装成异常实例的过程(不是太清楚)。框架中在ReflectionInfo和ObjectProbe中有使用。

Logging目录:
Logging目录类似于apache jarkata中的commons log,对log进行了封装,可以同时支持多种log实现,并通过配置文件进行配置。不详细说明。


Pagination目录:
Pagination目录辅助查询分类。
PaginatedArrayList类实现了IPaginatedList接口。用于维护页码和页中的数据内容。维护分页状态实现分页算法。PaginatedArrayList和具体的数据访问无关,内部通过ArrayList容器分类。

Transaction目录:
Transaction目录中的类用于事务管理。
IsolationLevel枚举定义了事务的隔离级别。
TransactionOptions结构指明了事务行为:事务时间段和隔离级别。
TransactionScopeOptions枚举描述了事务范围(Transaction scope)和事务的关联关系。
TransactionScope用于管理分布式事务,不过只支持1.1而且对操作系统由要求,不支持win2000。

Utilities目录:
Utilities目录中是一些公用类。
ConfigWatcherHandler类用于监视配置文件以便在配置文件修改的时候进行相应的处理,比如重新加载并处理配置文件。该类中注意Timer类和FileSystemWatcher类的用法。
DBHelperParameterCache类用于对存储过程参数的缓存。
HashCodeProvider类的public static int GetIdentityHashCode(object obj)方法返回obj的HashCode。
Resources类用于简化资源文件的访问。可以通过流,文件和url获取资源文件,并解析为XmlDocument。
ScriptRunner类用于执行sql脚本语句。
StringTokenizer类类似于java中的StringTokenizer,可以分割字符串为字符串数组。

Utilities/Objects目录:
Utilities/Objects目录下的类主要用于反射。
ObjectProbe由于获取对象的反射信息和运行时值信息。
ReflectionInfo主要缓存了类的定义信息,可以使property和get/set方法的映射更加简单。

Utilities/Proxy目录:
Utilities/Proxy目录利用Castle DynamicProxy的代理类。
CachedProxyGenerator继承自Castle DynamicProxy的ProxyGenerator,通过CreateProxy方法利用ProxyBuilder.CreateInterfaceProxy(interfaces, targetType )创建动态代理。
IProxyGenerator一个标志接口。
ProxyGeneratorFactory工厂类,获取Castle DynamicProxy的一个ProxyGenerator实例。

Utilities/TypesResolver目录:
Utilities/TypesResolver目录中的类用于类型解析。也就是利用反射和程序集从字符串构造出相应的类型。
TypeResolver的Type Resolve (string typeName)方法从程序集中获取类型信息。
CachedTypeResolver继承自TypeResolver,增加了缓存功能。
TypeAliasResolver类定义了Ibatis内部的别名和实际类型的映射,例如list-〉new ArrayList(),以及将系统的内置值类型变换为相应的对象类型。

Xml目录:
Xml目录包含一个NodeUtils类,主要用于从XmlNode中解析属性,和从NameValueCollection中获取值,ParsePropertyTokens(string str, NameValueCollection properties) 方法用于将str中的占位符用相应的properties中的值替代。str中可以有多个占位符属性。

分享到:
评论

相关推荐

    Ibatis 入门经典 实例

    《Ibatis 入门经典 实例》 Ibatis 是一款著名的轻量级 Java 持久层框架,它提供了一种映射 SQL 和 Java 对象的简单方式,从而减轻了开发人员在数据库操作中的工作负担。这篇实例教程将带你深入理解 Ibatis 的核心...

    Ibatis入门例子,Ibatis教程

    在本教程中,我们将通过一个简单的Ibatis入门例子,带你逐步了解并掌握这个强大的框架。 首先,我们需要在项目中引入Ibatis的依赖。通常,我们会在Maven的pom.xml文件中添加以下依赖: ```xml <groupId>org....

    ibatis入门

    **Ibatis 入门教程** Ibatis 是一个优秀的 Java ORM(对象关系映射)框架,它允许程序员将数据库操作与业务逻辑分离,提供灵活的 SQL 配置和映射机制,使得开发人员能够自由地编写 SQL 而不被 ORM 的复杂性所束缚。...

    iBatis入门(三)

    **iBatis入门(三)** 在本篇中,我们将深入探讨iBatis,这是一个流行的开源持久层框架,它允许开发者将SQL语句与Java代码分离,提供更灵活的数据库操作方式。iBatis的核心是SQL Maps,这些映射文件包含了SQL语句以及...

    最简单的iBatis入门例子

    本教程将带你一步步走进iBatis的世界,通过一个最简单的入门例子来了解其基本概念和使用方法。 一、iBatis简介 iBatis(现在称为MyBatis)是由Apache软件基金会维护的一个开源项目,它解决了Java应用程序直接操作...

    ibatis 入门

    标题 "ibatis 入门" 暗示我们要探讨的是关于使用和理解开源持久层框架 iBATIS 的基础知识。iBATIS 是一个优秀的 Java 应用框架,它将 SQL 查询与 Java 代码分离,提供了更灵活的数据访问方式。这篇博客(博文链接已...

    ibatis入门到精通详细讲解

    **Ibatis 入门到精通详细讲解** Ibatis 是一个优秀的持久层框架,它允许开发者将 SQL 语句与 Java 代码分离,提供了一个灵活的映射框架,从而减轻了开发人员在数据库操作上的工作负担。这篇详细讲解将带你从入门到...

    ibatis 自己学的一个ibatis项目(只是打通了Oracle) 非常适合入门

    自己写了一个Ibatis入门文件 JDK用的1.4 ibatis用的2.3.0 一定要注意版本问题,不然出现本本不兼容很费劲,我调了一上午,注意一定要用JDK1.4 ibatis2.3.0! 数据库自己建一张简单的表就行了,特别说明 只适合新手...

    ibatis入门与ibatis迭代的用法

    **ibatis入门** iBatis,一款轻量级的Java持久层框架,是MyBatis的前身,由美国华人开发团队开发。它提供了一个SQL、Java和XML的映射框架,将SQL语句与Java代码分离,使得开发者可以更加灵活地处理数据库操作,避免...

    ibatis入门教程_ibatis入门教程_源码

    Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得...通过学习这个Ibatis入门教程,你可以了解并掌握如何在Java应用中使用Ibatis进行数据操作,为后续的进阶学习和项目开发打下坚实的基础。

    ibatis ibatis入门教程

    【标题】:Ibatis Ibatis入门教程 【描述】:Ibatis是一款优秀的持久层框架,它简化了Java应用与数据库之间的交互,通过提供一个映射SQL的XML或注解方式,使得开发人员能够将精力集中在业务逻辑上,而不是繁琐的...

    iBATIS入门实例测试

    **iBATIS入门实例测试** iBATIS是一个优秀的开源持久层框架,它简化了Java应用程序与数据库之间的交互,使得开发者可以专注于SQL语句本身,而无需处理大量的JDBC代码。本教程将通过一个简单的实例来介绍如何使用...

    iBatis入门Helloworld

    iBatis,现已被更名为MyBatis,是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。...通过这个简单的"iBatis入门Helloworld"项目,你可以快速掌握iBatis的基础操作,并为进一步学习和应用打下坚实基础。

    ibatis入门实例(全代码)

    在这个"ibatis入门实例(全代码)"中,我们将探讨如何通过 Ibatis 实现对数据库的操作,包括数据库的初始化、SQL 映射文件的编写以及 Java 代码的集成。 首先,让我们了解数据库的准备工作。在实例中,提供了数据库...

    ibatis入门实例,很方便,导入即用

    **Ibatis 入门实例详解** Ibatis 是一个优秀的、开源的 Java 数据访问框架,它简化了数据库操作,使得开发者可以更加专注于 SQL 而不需处理底层的 JDBC 编码。Ibatis 提供了一个映射框架,允许将 SQL 查询与 Java ...

    ibatis 入门的例子

    这个压缩包中的"ibatisJavaTest"项目应该是一个简单的Ibatis入门示例,可能包含了配置文件、映射文件、测试类等。通过分析和运行这个项目,你可以直观地了解Ibatis如何与数据库交互,以及如何编写和使用Mapper接口。...

    ibatis入门级示例

    ibatis入门级完整示例,包含ibatis-2.3.4.726.jar、commons-logging-1.0.4.jar、mysql-connector-java-3.1.10-bin.jar和建表语句。

Global site tag (gtag.js) - Google Analytics