JDBC
1 2 3 4 5 6 7 8 9 10
| st=>start: 开始 op1=>operation: 加载JDBC驱动 op2=>operation: 建立并获取数据库连接 op3=>operation: 创建 JDBC Statements 对象 op4=>operation: 设置SQL语句的传入参数 op5=>operation: 执行SQL语句并获得查询结果 op6=>operation: 对查询结果进行转换处理并将处理结果返回 op7=>operation: 释放相关资源(关闭Connection,关闭Statement,关闭ResultSet) e=>end st->op1->op2->op3->op4->op5->op6->op7->e
|
mybatis
1 2 3 4 5 6 7 8 9
| Title:java使用mybatis框架从数据库获取数据
client->mybatis: 调用 mybatis->jdbc:调用 jdbc->mysql服务器:连接(jdbc-mysql) mysql服务器-->jdbc:返回 jdbc-->mybatis:返回 mybatis-->client:返回
|
ORM框架实现
1 2 3 4 5 6 7 8 9 10 11
| Title:mybatis初始化,创建configuration对象,提供sqlSession
client->client:获取配置文件inputStream流 client->sqlSessionFactoryBuilder:build(inputStream) sqlSessionFactoryBuilder->XMLConfigBuilder:new XMLConfigBuilder(inputStream) XMLConfigBuilder->XMLConfigBuilder:new Configuration() sqlSessionFactoryBuilder->XMLConfigBuilder:解析配置文件 XMLConfigBuilder-->>sqlSessionFactoryBuilder:返回Configuration对象 sqlSessionFactoryBuilder->sqlSessionFactoryBuilder:build(Configuration) sqlSessionFactoryBuilder-->>client:返回new DefaultSqlSessionFactory(config) client->client:使用sqlSessionFactory
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| Title:Configuration对象初始化(细化)
sqlSessionFactoryBuilder->XMLConfigBuilder:new XMLConfigBuilder(inputStream) XMLConfigBuilder->XPathParser:new XPathParser() XPathParser->XMLMapperEntityResolver:new XMLMapperEntityResolver() XPathParser->XPathParser:设置document、entityResolver XPathParser->XPath:XPathFactory.newXPath() XMLConfigBuilder->XMLConfigBuilder:new Configuration(),设置解析器为XPathParser sqlSessionFactoryBuilder->XMLConfigBuilder:解析配置文件 XMLConfigBuilder-->>XPathParser:evalNode("/configuration") XPathParser-->>XPath:找到configuration的XNode XMLConfigBuilder-->>Configuration:设置变量属性(properties) XMLConfigBuilder-->>Configuration:增加类型与别名的关系(typeAliases)(HashMap<String, Class<?>>) XMLConfigBuilder-->>Configuration:增加拦截器(plugins)(ArrayList<Interceptor>()) XMLConfigBuilder-->>Configuration:设置对象工厂(ObjectFactory) XMLConfigBuilder-->>Configuration:设置对象包装工厂(ObjectWrapperFactory) XMLConfigBuilder-->>Configuration:设置反射工厂(ReflectorFactory) XMLConfigBuilder-->>Configuration:设置属性的设置(settings) XMLConfigBuilder-->>Configuration:设置环境(environments)(事务管理器、数据源) XMLConfigBuilder-->>Configuration:设置数据库(databaseIdProvider) XMLConfigBuilder-->>Configuration:设置类型处理器(java_type类型与jdbc_type类型) XMLConfigBuilder-->>Configuration:设置mapper类与对应的代理类(HashMap<Class<?>, MapperProxyFactory<?>>()) XMLConfigBuilder->sqlSessionFactoryBuilder:返回Configuration对象
|
数据源与连接池实现
mybatis实现带连接池的数据源,但是现在项目都用其他第三方的数据源,但是看一看还是有帮助的。
事务管理机制
提供事务管理机制,可以看看,一般情况使用JdbcTransaction.
一级缓存
使用的本地缓存,用hashMap实现,本地缓存根据sqlSession的生命周期,任何在这个sqlSession中执行update(update、delete、insert),都会清空。
二级缓存
application级别的缓存,就是在执行前查看缓存中是否有,如果有返回缓存。现在已经不经常使用application级别的缓存了,不容易分布式化。