【mybatis】记录优缺点说明-创新互联

原理

在这里插入图片描述

站在用户的角度思考问题,与客户深入沟通,找到翼城网站设计与翼城网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、成都做网站、企业官网、英文网站、手机端网站、网站推广、域名注册、虚拟空间、企业邮箱。业务覆盖翼城地区。
  1. 读取mybatis的mybatis-config.xml配置文件
  2. 加载映射文件
  3. 构建SQLSessionFactory会话工厂(工厂模式)
  4. 构建SqlSession会话对象(工厂模式就是创建对象)
  5. Executor执行器根据SqlSession传递的参数动态地生成需要执行的SQL语句操作数据库
优点
  1. 简单容易上手基于sql编程,与jdbc相比减少了一半以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接;
  2. 由于mybatis使用jdbc来连接数据库,所有只要jdbc支持的数据库mybatis都支持,而jdbc提供了可拓展性,所有只要数据库有针对java的jar包就可以与mybatis兼容。很好的与各个数据库兼容,开发人员不需要考虑数据库的差异性;
  3. 提供很多第三方插件,能够与spirng很好的集成;
  4. Mybatis相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML里,从程序代码中彻底分离,解除sql与程序代码的耦合,便于统一管理和优化并可重用;
  5. 提供XML标签,支持编写动态SQL语句;提供映射标签,支持对象与数据库的ORM字段关系映射;提供对象关系映射标签,支持对象关系组建维护。
缺点

SQL语句编写的工作量较大,特别是在字段多和关系表多的时候,体现的淋漓尽致,对开发人员编写SQL语句的功底有一定要求;SQL语句依赖于数据库,导致数据库一致性差,不能随意更换数据库。(采用分数据库写)

其他

Mybatis通过SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory生成Session,最后由Session来开启执行事务和SQL语句。其中SessionFactoryBuider,SessionFactory,Session的生命周期都是差不多的,支持JDBC和JTA事务处理。Mybatis是半自动的,它仅有基本的字段映射,对象数据以及对象实际关系任然需要通过手写sql来实现和管理,由于mybatis需要手写sql,因此与数据库的耦合性直接取决于程序员写的sql的方法,如果sql不具通用性而用例很多某数据库特性的sql语句,移植性也会随之降低很多,成本很高。但是,由于mybatis的sql语句都是写在xml里,这样优化起来方笔,灵活度较高。这里再说一下mybatis缓存机制,Mybatis的二级缓存配置都是在每个具体的表-对象映射中进行详细配置,这样针对不同的表可以自动以不同的缓存机制,并且Mybatis可以在命名空间中共享相同的缓存配置和实例,通过cache-ref来实现。

补充

mybatis中#{}${}的区别:
#{}是预编译处理,会将sql中的#{}替换为问号【?】,调用PreparedStatement的set方法来赋值
${}是字符串替换,就是把${}替换成变量的值。

使用#{}可以有效的防止sql注入,提供系统安全性。

缓存 一级缓存

基于PerpetualCache的 HashMap 本地缓存,它的声明周期是和SQLSession一致的,有多个SQLSession或者分布式的环境中数据库操作,可能会出现脏数据。当Session flush或 close 之后,该 Session 中的所有 Cache 就将清空,默认一级缓存是开启的。

二级缓存

基于PerpetualCache的 HashMap 本地缓存,不同在于其存储作用域为 Mapper 级别的,如果多个SQLSession之间需要共享缓存,则需要使用到二级缓存,并且二级缓存可自定义存储源,如 Ehcache。默认不打开二级缓存,要开启二级缓存,使用二级缓存属性类需要实现 Serializable 序列化接口(可用来保存对象的状态)。

温馨提醒:如果有描述不符,可以评论说明,携手总结归纳

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享文章:【mybatis】记录优缺点说明-创新互联
新闻来源:http://scyanting.com/article/dphodg.html