MyBatis
传统的JAVA应用都是采用JDBC来访问数据库,但是JDBC采用的是一种基于SQL的操作方法,这种操作方式与JAVA语言面向对象的特性不太一样。所以需要一种能让JAVA以面向对象的方式操作关系数据库。这种技术叫做ORM(object relation mapping )。最早的是: Entity EJB(Enterprise JavaBean) 但是会有些繁琐。之后是 Hibernate框架应运而生, 传统的JAVA对象(POJO)映射成持久化类,允许应用程序以面向对象的方式来操作OPJO,而此框架则负责将这中操作转化成底层的SQl操作。
但是这总一站式的解决方式在一些特定的环境行,未必合适
- 系统的部分数据或者全部数据来自现有数据库,安全考虑,只对开发团队提供几条SelectSQL以获取所需数据,具体的表结构不予公开。
- 开发规范中要求,所有牵涉到业务逻辑部分的数据库操作,必须在数据库层由存储过程实现。
- 系统数据处理量巨大,性能要求极为苛刻,必须通过高度优化的SQL语句才能到达系统性能设计指标。
面对这样的需求,此时直接使用JDBC进行访问数据库操作也是不错的选择。
但是“半自动化”的Mybatis技术,却正好解决了这个问题。 相对于 Hibernate提供了全面的数据库封装机制的“全自动化”ORM实现而言的,“全自动”ORM实现了POJO和数据库表之间的映射,以及SQL的自动生成和执行而MyBatis的着力点,则在于POJO与SQL之间的映射关系。对于业务逻辑实现人员而言,面对的是纯粹的JAVA对象 。
同时
Mybatis 作为持久层框架,其主要思想是将程序中的大量SQL语句剥离出来,配置在配置文件中,实现SQL的灵活配置。这样做的好处是将SQL与程序代码分离,可以在不修改程序代码的情况下,直接在配置文件中修改SQL。
Spring
Spring只是抽象了大量JavaEE应用中的常用代码,将他们抽象成框架。大幅度的提高了开发效率。
Spring框架号称JavaEE应用的一站式解决方案,Spring本身提供了一个设计优良的MVC框架,Spring MVC。
Spring框架并未提供完整的持久层框架。Spring框架的魅力所在。Spring与大部分持久层框架无缝整合: Mybatis 、Hibernate、JPA、TopLink。无论选择哪种持久层跨国家,Spring都会为你提供无缝的整合和极好的简化。
Spring容器更像是一种中间层容器,Spring向上可以与MVC框架无缝整合,向下可以与各种持久层框架无缝整合。实际上Java EE 这个概念也是由Spring框架衍生出来的。Spring 框架暂时没有较好的替代框架。
参考文献:Spring+Mybatis 企业应用实战(第2版)疯狂软件编著