为什么我推荐使用springdatajpa 而不是 mybatis

    由于种种原因,最近开发项目使用的持久层框架由springdatajpa 更换为 mybatis ,但是一直不知道mybatis 到底好在哪里,与朋友也一直就两种持久层技术哪种更好争执不休

    JPA默认使用hibernate作为ORM实现,所以,一般使用Spring Data JPA即会使用hibernate。我们再看看hibernate的官方概念,Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

     从框架的设计理念上来看,hibernate是一种面向对象,全自动的orm框架,hibernate 是我们不用关注数据库,而需要去关注代码本身,通过操作映射表的实体对象,一定程度上简化了开发,提高了开发效率,而mybatis 是一种半自动的orm框架,使用时需要自己写sql语句,在我看来,项目中太多的sql语句,反而不如直接的实体对象操作更清晰明了

     从表关联上看,有人说hibernate的多表关联是一大弊病,hibernate 本身并没有提供实体类多表关联的方法,而如果通过mangtoOne之类的实体类设计又会产生效率问题,但其实现在已经有了很好的解决方案,通过整合queryDSL就可以很方便地对表对象进行关联查询,这样其实mybatis 的灵活sql优势其实也没有那么的明显

     从表,表字段映射上看,hibernate 直接通过框架生成表,表字段,能够更方便地对数据库的表进行维护,而mybatis 建表更新表都需要写sql语句,又需要花费精力去维护这样的sql语句,sql语句查询出来的数据又要通过resultMap 进行映射,没有hibernate方便

     从性能上看,如果只是内部系统,用户量较小的系统,两个框架其实性能上差距不会太明显,这个时候推荐使用springdatajpa 开发效率反而会更高,但是如果是互联网项目,app接口之类的项目,为了追求极致的性能,还是我觉的就应该对两个框架的利弊进行取舍了
 

转载于:https://my.oschina.net/wangjunBlog/blog/1815461

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值