1.常见的数据层访问方式比较
JDBC
java原生的关系型数据库访问方式
- 每次操作数据库都需要获取连接关闭连接,在大量访问数据库时,频繁的开关连接消耗性能
- 需要手动编写sql,有学习成本
- 查询出的结果需要手动进行封装到bean
- 没有缓存处理机制
- sql语句写死在程序中,需要修改sql必须修改源文件
Hibernate
基于面向对象理念设计的DAO层框架,基本理念就是维护对象到表的映射关系,通 过操作对象操作表中的数据,从而可以减少甚至杜绝sql的使用
- 相对比较沉重,效率不好
- 当涉及到比较复杂的查询时Hibernate的操作对象的方式用起来非常麻烦,甚至无法实现,只能用sql操作
- 底层需要频繁的拼接sql,产生大量冗余的sql
MyBatis
是一种半自动对象-表映射关系的DAO层框架,可以自动的进行对象的封装,但是sql
仍然需要自己来写。
2.数据库缓存的实现
jdbc没有缓存处理机制
MyBatis:
一级缓存:(默认开启,可关闭)
缓存只在一个事务中有效,即同一个事务中先后执行多次同一个查询,
只在第一次真正去查库,并将结果缓存,之后的查询都直接获取缓存中
的中数据。如果是不同的事务,则缓存无效。
二级缓存:(默认关闭)
缓存在全局有效,一个事务查询一个sql得到结果,会被缓存起来,之后
只要缓存未被清楚,则其他事务如果查询同一个sql,得到的将会是之前
缓存的结果。二级缓存作用范围大,作用时间长,可能造成的危害也更
大,所以在开发中一般很少启用Mybatis的二级缓存。
第三方工具实现的缓存:
Redis内存数据库..
未完待续.........