Hibernate与,hibernate与mybatis( 二 )


一个非常好的问题 。在JavaSpring Boot主流开发框架组合中 , 数据层开发常用的持久化实现方案有多种选择 , 其中MyBatis和Hibernate都是比较受欢迎的框架 。不得不提国内的一个开源框架MyBatis Plus , 对MyBatis做了进一步增强、简化开发和提高效率 , 并且提供了简单易用的代码生成器 。
开发过程只需三步:Spring Boot集成MyBatis和MyBatis Plus , 配置代码生成器 , 调用Service开发CRUD功能 。一 , Spring Boot集成二 , 配置代码生成器MyBatis Plus提供了一个功能强大的代码生成工具AutoGenerator1 , 在代码中修改文件路径和包名称:MyBatisPlusGenerator.java2 , 运行MyBatisPlusGenerator.main() , 生成器可以放在一个独立的项目中 。
3 , 生成代码文件entity, mapper和service , 继承基类BaseMapper和IService封装的CRUD功能函数 。三 , 调用ServiceCRUD是创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)4种数据库操作的首字母缩写 , LogServiceImpl实现IService接口 , 聚合LogMapper功能:以单元测试读写Log数据表为例: 我是工作多年的Web应用架构师 , 欢迎关注我 , 了解更多IT专业知识 。
Java开发中 , MyBatis、Hibernate、Spring Data JPA应该如何选择?

Hibernate与,hibernate与mybatis


选择哪一种框架 , 需要结合项目实际来 , 结合业务场景和团队成员的能力 , 综合考虑并选择技术方案 。先和大家讲讲每一种框架是啥Hibernate:POJO与数据库表建立映射关系;Java程序员可以使用操作对象的思维操作数据库 。(POJO就是Java Bean , 只有有属性、set、get方法)Mybatis:做的是POJO与SQL之间的映射关系;程序员需要编写SQL;Spring Data JPA:有人说它是对Hibernate更高级的封装 , 这种说法是有一些问题的;第二部分详细说明一下 。
要解释清楚Spring Data JPA是什么 , 需要一步步说起期初Java需要通过各个数据库厂商提供的API进行数据库的访问 , 后来JAVA提出了JDBC , 程序直接使用JDBC这套规范就可以跟各个数据库进行对接;接着诞生了ORM技术 , 简化了Java对象的持久化工作 , 出现了Hibernate、TopLink等ORM框架;Sun公司在JDK1.5的时候 , 吸收了Hibernate、TopLink等ORM框架的优点 , 提出了Java持久化规范:JPA;Hibernate在3.2的时候提供了JPA的实现 , 其余的JPA的供应商还有诸如OpenJPA、Toplink等;Spring在做持久化这一块的工作 , 开发了Spring-data-xxx这一系列包 , 如:Spring-data-jpa , Spring-data-redis , Spring-data-mongodb等等 , 这些都是Spring 提供的基于JPA和其他一些NOSQL的Repository 。
Spring data JPA 是在JPA规范的基础下提供了Repository层的实现 , 但是使用哪一款ORM需要你自己去决定;相比我们更为熟悉的Hibernate和MyBatis , Spring Data JPA可以看做更高层次的抽象 。使用Spring data JPA , 默认底层是Hibernate , 但是可以修改成其他的ORM框架 。
几种框架的优劣Hibernate开发难度较大 , 学习周期长;但是可以让开发者无需关心SQL , 更专注业务流程;HQL不关心数据库的类型 , 所以迁移起来很方便;Mybatis需要手动编写SQL语句(更直观) , 可更直接地对SQL进行优化 , 但是数据库移植性差;Spring Data JPA简化了数据库访问,可以通过命名规范编写SQL , 如果SQL较为复杂 , 还是需要通过注解的方式编写SQL;它更适用于现在微服务的架构(微服务的极致都是单表操作) 。

推荐阅读