首页>>后端>>Spring->spring框架和mybatis?

spring框架和mybatis?

时间:2023-12-02 本站 点击:0

如何整合 spring和mybatis框架

spring主要用来管理对象关系的,mybatis是链接数据库的。这两个单独也可以使用的,整合是因为现在ssh ssi比较流行也就是spring Struts2 hibernate mybatis也叫ibatis。

springmvc和mybatis框架的不同

1、mybatis是一个持久层框架,是apache下的开源项目,前身是itbatis,是一个不完全的ORM框架,mybatis提供输入和输出的映射,需要程序员自己写sql语句,mybatis重点对

sql语句的灵活操作。

适合用于:需求变化频繁, 数据模型不固定的项目,例如:互联网项目。

2、springMVC易于同其它View框架(Tiles等)无缝集成,采用IOC便于测试。

它是一个典型的教科书式的mvc构架,而不像struts等都是变种或者不是完全基于mvc系统的框架,对于初学者或者想了解mvc的人来说我觉得

spring是最好的,它的实现就是教科书!第二它和tapestry一样是一个纯正的servlet系统,这也是它和tapestry相比

struts所具有的优势。而且框架本身有代码,看起来容易理解。

spring+mybatis的优缺点

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+springmvc+mybatis框架需要哪些jar包

mybatis依赖的jar非常少,主要有两个:

(1)mybatis自身jar,它就只有一个jar包构成,不像spring,有那么一大堆。在早期的版本,mybatis还需要依赖javassist jar(实现动态代理),ognl jar(实现动态sql),而今mybatis已经将javassist和ognl融入了进来,全部整合到mybatis内部,所以目前mybatis自身只有一个jar构成。

(2)数据库驱动jar包,例如mysql-connector-java.jar等。其实,即便仅仅使用JDBC,也得依赖于数据库驱动jar包。

另外,还有两个当做补充的jar包:

(1)日志jar,例如log4j.jar,很多框架都依赖日志jar包,用于打印日志,方便调试。

(2)mybatis-spring jar,可以将MyBatis代码无缝地整合到Spring中。

补充的jar,非必须要用到的,只想跑个mybatis demo,则中需要上面的两个必须jar即可。

MyBatis中文官网


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Spring/10028.html