`
zhangchunxiao
  • 浏览: 16887 次
社区版块
存档分类
最新评论

spring+mybatis优缺点

    博客分类:
  • Java
 
阅读更多
一、mybatis的优缺点:
优点:
1. 易于上手和掌握。
2. sql写在xml里,便于统一管理和优化。
3. 解除sql与程序代码的耦合。
4. 提供映射标签,支持对象与数据库的orm字段关系映射
5. 提供对象关系映射标签,支持对象关系组建维护
6. 提供xml标签,支持编写动态sql。
缺点:
1. sql工作量很大,尤其是字段多、关联表多时,更是如此。
2. sql依赖于数据库,导致数据库移植性差。
3. 由于xml里标签id必须唯一,导致DAO中方法不支持方法重载。
4. 字段映射标签和对象关系映射标签仅仅是对映射关系的描述,具体实现仍然依赖于sql。(比如配置了一对多Collection标签,如果sql里没有join子表或查询子表的话,查询后返回的对象是不具备对象关系的,即Collection的对象为null)
5. DAO层过于简单,对象组装的工作量较大。
6.  不支持级联更新、级联删除。
7. 编写动态sql时,不方便调试,尤其逻辑复杂时。
8 提供的写动态sql的xml标签功能简单(连struts都比不上),编写动态sql仍然受限,且可读性低。
9. 使用不当,容易导致N+1的sql性能问题。
10. 使用不当,关联查询时容易产生分页bug。
11. 若不查询主键字段,容易造成查询出的对象有“覆盖”现象。
12. 参数的数据类型支持不完善。(如参数为Date类型时,容易报没有get、set方法,需在参数上加@param)
13. 多参数时,使用不方便,功能不够强大。(目前支持的方法有map、对象、注解@param以及默认采用012索引位的方式)
14. 缓存使用不当,容易产生脏数据。

总结:
mybatis的优点其实也是mybatis的缺点,正因为mybatis使用简单,数据的可靠性、完整性的瓶颈便更多依赖于程序员对sql的使用水平上了。sql写在xml里,虽然方便了修改、优化和统一浏览,但可读性很低,调试也非常困难,也非常受限,无法像jdbc那样在代码里根据逻辑实现复杂动态sql拼接。mybatis简单看就是提供了字段映射和对象关系映射的jdbc,省去了数据赋值到对象的步骤而已,除此以外并无太多作为,不要把它想象成hibernate那样强大,简单小巧易用上手,方便浏览修改sql就是它最大的优点了。
mybatis适用于小型且程序员能力较低的项目和人群使用,对于中大型项目来说我并不推荐使用,如果觉得hibernate效率低的话(实际上也是使用不当所致,hibernate是实际上是不适用于拥有高负载的工程项目),还不如直接用spring提供的jdbc简单框架(Template),同样支持对象映射。

二、spring的优缺点
优点
a. Spring能有效地组织你的中间层对象,不管你是否选择使用了EJB。如果你仅仅使用了Struts或其他为J2EE的 API特制的framework,
Spring致力于解决剩下的问题。
b. Spring能消除在许多工程中常见的对Singleton的过多使用。根据我的经验,这是一个很大的问题,它降低了系统的可测试性和面向对
象的程度。
c. 通过一种在不同应用程序和项目间一致的方法来处理配置文件,Spring能消除各种各样自定义格式的属性文件的需要。曾经对某个类
要寻找的是哪个魔法般的属性项或系统属性感到不解,为此不得不去读Javadoc甚至源编码?有了Spring,你仅仅需要看看类的JavaBean属性
。Inversion of Control的使用(在下面讨论)帮助完成了这种简化。
d.? 通过把对接口编程而不是对类编程的代价几乎减少到没有,Spring能够促进养成好的编程习惯。
e. Spring被设计为让使用它创建的应用尽可能少的依赖于他的APIs。在Spring应用中的大多数业务对象没有依赖于Spring。
f.      使用Spring构建的应用程序易于单元测试。
g.      Spring能使EJB的使用成为一个实现选择,而不是应用架构的必然选择。你能选择用POJOs或local EJBs来实现业务接口,却不会影响
调用代码。
h.      Spring帮助你解决许多问题而无需使用EJB。Spring能提供一种EJB的替换物,它们适用于许多web应用。例如,Spring能使用AOP提
供声明性事务管理而不通过EJB容器,如果你仅仅需要与单个数据库打交道,甚至不需要一个JTA实现。
i.      Spring为数据存取提供了一个一致的框架,不论是使用的是JDBC还是O/R mapping产品(如Hibernate)。
Spring确实使你能通过最简单可行的解决办法来解决你的问题。而这是有有很大价值的。
缺点:使用人数不多、jsp中要写很多代码、控制器过于灵活,缺少一个公用控制器
分享到:
评论

相关推荐

    Spring+Mybatis+Springboot面试试题及答案.zip

    这个压缩包中的面试试题及答案将涵盖以上各个领域的核心知识点,包括但不限于这些技术的基本原理、应用场景、优缺点以及如何在实际项目中使用。通过深入学习和理解这些内容,可以提升面试者的专业技能,增加求职成功...

    开源框架面试题系列:Spring+SpringMVC+MyBatis

    2. **映射器接口与XML配置**:对比接口方法与XML映射文件的关联方式,以及各自的优缺点。 3. **缓存机制**:分析MyBatis的一级和二级缓存,以及如何自定义缓存策略。 4. **事务管理**:探讨MyBatis中的事务控制,...

    达内it培训 java培训电子书 内部资料 系列14 SPRING+MYBATIS开发实战 pdf

    9. Spring Data JPA与MyBatis对比:探讨两者的优缺点,以及在不同场景下的选择策略。 10. 实战项目:通过一个完整的案例,展示Spring和MyBatis在实际项目中的应用流程,包括需求分析、设计、编码和测试。 这份内部...

    基于spring+mybatis+mysql的高考志愿填报辅导系统源代码+数据库

    Mybatis作为轻量级的持久层框架,弥补了传统的JDBC操作繁琐、易出错的缺点。它允许开发者通过XML或注解方式灵活配置SQL语句,直接映射SQL结果到Java对象,大大提高了开发效率。Mybatis的缓存机制和动态SQL功能,...

    SpringMVC+Spring+Mybatis实现酒店日常的基本管理.zip

    通过这个项目,开发者可以学习到如何整合SpringMVC、Spring和Mybatis,理解它们在实际项目中的应用场景和优缺点。同时,也可以掌握Web应用的开发流程,包括模型-视图-控制器模式、事务管理、数据库操作等核心概念。...

    spring+mybatis的编码式事务

    在Spring框架中,MyBatis作为持久层框架与Spring结合使用时,事务管理是一个至关重要的环节。编码式事务,也称为编程式事务管理,是指在代码中显式地控制事务的开始、提交、回滚等操作。这种方式虽然灵活,但会增加...

    BAT大厂高频面试题:Redis+JVM+微服务+并发+Spring+MyBatis.docx

    根据给定文件的信息,我们可以提炼出以下几个主要技术领域内的知识点:Redis、JVM、微服务、并发编程、Spring以及MyBatis。 ### Redis #### 1. 什么是 Redis? Redis (REmote DIctionary Server) 是一种开源的键值...

    Spring+myBatis 整合两种方法,一种是dao 整合,一种是mapper接口代理

    这两种整合方式各有优缺点。DAO整合方式虽然较为繁琐,但灵活性较高,适合对SQL有深度定制需求的情况;而Mapper接口代理方式则更加简洁,易于维护,适合大部分常规操作。根据项目的具体需求,可以选择适合的整合方式...

    ssm(spring+springMVC+mybatis)权限管理系统完整源码.zip

    SSM(Spring+SpringMVC+MyBatis)是一个经典的Java web开发框架组合,广泛应用于...此外,对于标签中提到的C#,虽然不直接相关,但如果你熟悉C#,对比学习SSM框架也有助于拓宽编程视野,理解不同语言和技术栈的优缺点。

    基于Spring + Spring MVC + MyBatis+Mysql的自助购药小程序(源码+论文)

    随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化...测试结果表明,该系统能够实现所需的功能,运行状况尚可并无明显缺点。 关键字:自

    mybatis-plus优缺点

    ### Mybatis-Plus优缺点详解 #### 一、框架介绍 Mybatis-Plus是一个针对MyBatis框架的增强工具包,旨在简化常见的CRUD(创建、读取、更新、删除)操作,提升开发效率。它在不改变原有MyBatis核心功能的基础上,...

    spring与mybatis三种整合方法

    这三种整合方法各有优缺点。注解方式简单快捷,但可能使得业务逻辑和数据访问混合;XML配置方式则更灵活,适合大型项目,但配置较多;`SqlSessionDaoSupport`提供了一种抽象,降低了重复代码,但增加了继承层次。...

    springboot2+mybatis多种方式实现多数据配置方法

    在 pom.xml 文件中,我们需要配置相应的依赖项,包括 spring-boot-starter-data-jdbc、spring-boot-starter-aop、mybatis-spring-boot-starter、mysql-connector-java 和 druid-spring-boot-starter 等。 ...

    基于SpringBoot+MyBatis+Mysql的实习生管理小程序(源码+论文)

    结合数据内容管理的种种缺点,在互联网时代都可以得到有效的补充。结合先进的互联网技术,开发符合需求的软件,让数据内容管理不管是从录入的及时性,查看的及时性还是汇总分析的及时性,都能让正确率达到最高,管理...

    spring-boot-mybatis-interceptor:mybatis自定义主键插件,通过该插件生成分布式唯一雪花ID作为数据库表的主键

    在生成表主键ID时,我们可以考虑主键自增 或者 UUID,但它们都有很明显的缺点 主键自增:1、自增ID容易被爬虫遍历数据。2、分表分库会有ID冲突。 UUID: 1、太长,并且有索引碎片,索引多占用空间的问题 2、无序。 ...

    struts2,spring,mybatis学习

    5. 了解Spring MVC作为替代Struts2的选择,对比两者优缺点,掌握Spring Boot的快速开发特性。 6. 掌握数据库基础,如SQL语言,了解事务管理和连接池的概念,以便更好地使用Mybatis。 7. 实践项目开发,通过实际操作...

    springmvc_mybatis查询示例

    虽然主要使用了SpringMVC和MyBatis,但理解Hibernate可以帮助开发者对比不同ORM框架的优缺点。Hibernate是一个完整的对象关系映射(ORM)解决方案,提供了对JDBC的封装,使得Java对象可以直接操作数据库。 总的来说...

    图书管理系统课程设计.docx

    本课程设计的主题是基于 Spring + Spring MVC + MyBatis 的图书管理系统。该系统主要功能包括图书查询、图书管理、图书编辑、读者管理、图书的借阅与归还以及借还日志记录等。系统的设计目标是实现一个功能完善的...

    qfedu三段Spring以及Spring整合MyBatis

    ### qfedu三段Spring以及Spring整合MyBatis #### 一、复习昨日知识点回顾 昨日我们学习了Spring框架中的核心概念以及如何使用注解来实现IoC(控制反转)和DI(依赖注入)。其中涉及到了多种注解的使用方法及其应用...

Global site tag (gtag.js) - Google Analytics