关闭

Mybatis源码研究3:包和类的概述

标签: hashmapmemcachedmybatisschemasession
812人阅读 评论(0) 收藏 举报
分类:

org.apache.ibatis
  
  1.annotation
  本包定义了Mybatis框架中的24个注解。
  本包对Mybatis的其它包没有任何依赖,也不依赖于第三方的库。
  本包只被builder.annotation包的MapperAnnotationBuilder类引用。
  
  2.binding
  映射绑定,mapper.xml等映射文件相关实体的抽象。
  
  3.builder
  解析Mybatis的配置文件和映射文件,包括Xml格式和Annotation格式2种配置。
  
  4.cache
  
  本包包含了Mybatis框架的缓存接口定义和实现。
  PerpetualCache直接实现了Cache接口,其它缓存类实现采用装饰模式实现。
  采用装饰模式,一个个包装起来,形成一个链,典型的就是SynchronizedCache->LoggingCache->SerializedCache->LruCache->PerpetualCache,通过链起来达到功能增加。
  
  缓存框架按照 Key-Value方式存储,Key的生成采取规则为:[hashcode:checksum:mappedStementId:offset:limit:executeSql:queryParams]。
 
  本包只引用了Mybatis的io包的Resources,不依赖于任何第三方库。
 
  Mybatis的其它包大量引用了本包中的类和接口,即严重依赖于本包。
 
 
  5.datasource
  数据源相关接口和类。
  
  本包主要引用了Mybatis的reflection的ExceptionUtil类和loggin包的Log接口和LogFactory类。
  Mybatis的session包的Configuration类,builder.xml包的XMLConfigBuilder类引用了本包中的类和接口。
 
  6.exceptions
 
 本包定义了Mybatis框架中的异常。
 只依赖于Mybatis的executor的ErrorContext。
 Mybatis的其它包大量引用了本包中的类和接口,即严重依赖于本包。
 
 
  7.executor
  执行器接口和实现类及周边类和接口。
  
  8.io
  
  本包主要包含了资源加载和访问相关的类。
 
 本包只引用了Mybatis的logging包的Log接口和LogFactory类。
 
 Mybatis的其它包大量引用了本包中的类和接口,即严重依赖于本包。

 
  9.jdbc
  JDBC和SQL相关的类。
  
  10.logging
  
 把日志抽象成Log接口,该接口有7种实现。
  1.Apache Commons Logging
  2.JDBC Logging
  3.Java Util Logging
  4.Log4j
  5.No Logging
  6.Slf4J
  7.Stdout
  
  一个接口多种实现是框架的一贯作风.
  
  本包主要依赖了,Mybatis的reflection包的ExceptionUtil和io包的Resources。
  
  以及第三方的Log4j,Slf4j,CommonsLogging。
  
  Mybatis的其它包大量引用了本包中的类和接口,即严重依赖于本包。
 
 
  11.mapping
  Mybatis配置文件-映射文件相关的类。
  
  12.metadata
  
  包含了3个元数据实体类和一个工厂类。
 Database是对数据库信息的封装,包括catalog,schema,tables。
 Table是对表的封装,包括name,columns,primaryKey,catalog,schema。
 Column是对列的封装,包括name和type。
 DatabaseFactory用来生成Database对象。
 
 本包对mybatis的其它包没有任何依赖,mybatis的其它包也不依赖于本包,
 即本包可以作为单独的组件或者工具类提出来。
 
  13.parsing
  解析配置文件的核心类和接口。
  
  14.plugin
   插件相关接口和类。
   
  15.reflection
  反射相关类。
  
  16.scripting
  脚本解析相关类。
  
  17.session
  会话相关类,提供对外核心接口.
  
  18.transaction
  Transaction接口是对事务的抽象,有2种实现方式:
  1.JdbcTransaction,jdbc:手动管理
  2.ManagedTransaction,managed:container manage the full lifecycle of the transaction
  
  TransactionFactory接口定义了生成Transaction接口(实现类)的若干方法。
  该接口有2种实现方式:
  1.JdbcTransactionFactory,Creates {@link JdbcTransaction} instances。
  2.ManagedTransactionFactory,Creates {@link ManagedTransaction} instances。
 
  本包主要依赖了Mybatis session包的TransactionIsolationLevel和exceptions包的PersistenceException。
  
  Mybatis的其它包大量引用了本包中的类和接口,即严重依赖于本包。
 
  19.type
  类型处理,包含了类型处理器接口TypeHandler,父类BaseTypeHandler,以及若干个子类。

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

PCQQ UDP协议的研究<3>——0825 接收包

我们在   PCQQ UDP协议的研究——0825 发送包  一文里了解了0825发送包的结构。那么接收包又是怎么样的呢? 先来看我们的接收包: [NO.2 2013-09-13 15:23:32 ...
  • oMingZi12345678
  • oMingZi12345678
  • 2013-09-15 19:46
  • 1945

基础研究·应用研究·开发研究的区别

科学研究是创新和应用知识的探索过程。创新知识是探索人类未知的问题;应用知识是运用已知知识去开拓新的应用途径。因此,在国际上常用“研究与开发”(“R&D”)来表示科学研究活动。   科学研究工作可按其...
  • xiaozhonghuaa
  • xiaozhonghuaa
  • 2013-09-17 13:42
  • 1661

如何研究——以博士论文为例

很快就要开始读博士了,很多时候感觉自己还没有完全准备好。暑期在家的时候,我想了想,感觉不知道从何时开始,大脑好像陷入了一种“拒绝思考”的状态,这不是一个适合专心专注做事情的状态,个人的感觉比较浮,这是...
  • cq1982
  • cq1982
  • 2015-05-11 19:15
  • 1979

Mybatis源码研究3:包和类的概述

org.apache.ibatis     1.annotation   本包定义了Mybatis框架中的24个注解。   本包对Mybatis的其它包没有任何依赖,也不依赖于第三方的库。 ...
  • FansUnion
  • FansUnion
  • 2012-12-04 11:22
  • 3309

mybatis3源码研究-构建SqlSessionFactory(一)

从mybatis3用户指南(翻译版)中我们可以看到下面这段话: 每一个 MyBatis的应用程序都以一个SqlSessionFactory对象的实例为核心。 SqlSessionFactory对象...
  • u013013102
  • u013013102
  • 2015-10-29 20:44
  • 148

linux调度器源码研究 - 概述(一)

 linux调度器源码研究 - 概述(一) 本文为原创,转载请注明:http://www.cnblogs.com/tolimit/   引言     调度器作为操作系统的...
  • zdy0_2004
  • zdy0_2004
  • 2015-02-27 16:06
  • 323

linux调度器源码研究 - 概述(一)

转载:http://blog.chinaunix.net/uid/26772321.html 引言     调度器作为操作系统的核心部件,具有非常重要的意义,其随着linux内核的更新...
  • chen_jianjian
  • chen_jianjian
  • 2016-04-12 10:17
  • 266

Mybatis源码研究4:日志框架的实现

一、logging包的概述 本包主要依赖了 Mybatis的reflection包的ExceptionUtil和io包的Resources, 以及第三方的Log4j,Slf4j,CommonsL...
  • u014723529
  • u014723529
  • 2014-11-19 20:59
  • 878

Mybatis源码研究6:元数据(metadata)

一、依赖关系   本包对mybatis的其它包没有任何依赖,mybatis的其它包也不依赖于本包,   即本包可以作为单独的组件或者工具类提出来。         二、类功能概述   包含了3个元数...
  • scholar_man
  • scholar_man
  • 2015-09-06 16:33
  • 366

Mybatis源码研究7:缓存的设计和实现

一、包概述(org.apache.ibatis.cache)  本包包含了Mybatis框架的缓存接口的定义和实现。    本包只引用了Mybatis的io包的Resources,不依赖于任...
  • u014723529
  • u014723529
  • 2014-11-19 21:02
  • 871
    Java技术交流群:6128790
    微信
    编程技术学习交流群 :154514123
    微信
    个人资料
    • 访问:591475次
    • 积分:8289
    • 等级:
    • 排名:第2817名
    • 原创:311篇
    • 转载:34篇
    • 译文:2篇
    • 评论:110条
    最新评论