谈谈SpringData JPA和Mybatis的优缺点

SpringData JPA

SpringData JPA可以拆分成两部分来看。
SpringData简化了基于Spring框架应用的数据库访问,包括对关系型、非关系型、Map-Reduce、云数据服务等都支持,它具备ORM框架的对象关系映射的功能,提供统一的Repository接口实现CRUD、分页、排序等相关操作,也提供了统一的模板类。
JPA是一种规范,它简化了现有持久化的开发,并且充分吸收了Hibernate、TopLInk、JDO等框架。SpringData JPA是全自动框架,不需要自己写sql,当然也可以自己写sql实现。而自动生成sql这点是优点,也是缺点,因为生成的sql可读性差,而且一些业务比如执行逻辑删除等还是需要自己来实现sql。

Mybatis

Mybatis是一种半自动的ORM框架,它简单易上手,没有第三方依赖,支持对象与数据库的ORM关系映射,将sql代码与业务代码分离,使得开发人员可以更自如的写出高效的sql,不过反过来说不像SpringData JPA这种全自动的ORM框架,它需要自己实现sql语句,对开发人员的sql编写能力要求高,虽然将sql代码写在xml文件里方便了修改和编写,可这同时也降低了可读性。

总结

对于数据的操作,SpringData JPA是面向对象的,而MyBatis是面向关系的,两个框架的侧重点是完全不同的,依照实际情况选择合适的方式实现才能扬长避短。

tips:这里针对面向对象与面向关系给出几点说明

  • 面向对象考虑的是对象的整个生命周期包括在对象的创建、持久化、状态的改变和行为等,对象的持久化只是对象的一种状态,而面向关系型数据库的概念则更关注数据的高效存储和读取;
  • 面向对象更强调对象状态的封装性,对象封装自己的状态(或数据)不允许外部对象随意修改,只暴露一些合法的行为方法供外部对象调用;而关系型数据库则是开放的,可以供用户随意读取和修改关系,并可以和其他表任意的关联(只要sql正确允许的情况下);
  • 面向对象试图为动态的世界建模,他要描述的是世界的过程和规律,进而适应发展和变化,面向对象总是在变化中处理各种各样的变化。而关系型模型为静态世界建模,它通过数据快照记录了世界在某一时候的状态,它是静态的。

参考文章:http://www.jianshu.com/p/3927c2b6acc0

你可能感兴趣的:(Java基础,java,mybatis,jpa)