Hibermate与Mybatis 2020-3-21

本文对比了Hibermate与Mybatis两大持久层框架。Hibermate作为全表映射框架,简化了DAO层开发并提供了良好的数据库移植性;而Mybatis则允许更精细的手动SQL优化,并易于掌握。

Hibermate与Mybatis对比

Hibermate:

是一个全表映射的框架。通常开发者只需定义好持久化对象到数据库表的映射关系,就可以通过 Hibernate 提供的方法完成持久层操作,开发者并不需要熟练地掌握 SQL语句的编写,Hibernate会根据制定的存储逻辑,自动的生成对应的SQL

Mybatis:

是一个半自动映射的框架。这里所谓的“半自动”是相对于Hibernate全表映射而言的,MyBatis 需要手动匹配提供 POJO、SQL和映射关系,而Hibernate只需提供POJO 和映射关系。

Mybatis优势:

  • 可以进行更为细致的SQL优化,可以减少查询字段
  • 容易掌握

Hibermate优势:

  • Hibernate的DAO层开发比MyBatis简单
  • Hibernate对对象的维护和缓存要比MyBatis好,对增删改查的对象的维护要方便
  • Hibernate数据库移植性很好
### Hibernate到MyBatis-Plus的迁移指南 #### 一、技术背景分析 Hibernate 是一种全功能的对象关系映射(ORM)框架,支持复杂的事务管理和缓存机制。然而,在某些特定场景下,如需要更高效的查询性能或者对SQL有更高灵活性需求时,MyBatis-Plus 成为了一种更为合适的选择[^3]。 MyBatis-Plus 是基于 MyBatis 的增强工具,它不仅保留了 MyBatis 对 SQL 的完全掌控能力,还通过提供一系列便捷的功能插件来提升开发效率[^4]。因此,从 Hibernate 到 MyBatis-Plus 的迁移可以显著减少冗余代码并提高运行效率。 --- #### 二、迁移前准备 在正式开始迁移之前,需完成以下准备工作: 1. **评估当前项目的依赖情况** 需要全面了解现有的 Hibernate 数据访问层设计以及所涉及的核心功能模块。 2. **确认适配的目标数据库驱动程序** 如果目标数据库是达梦数据库,则应引入对应的 Maven 依赖项[^5]: ```xml <dependency> <groupId>com.dameng</groupId> <artifactId>Dm8JdbcDriver18</artifactId> <version>8.1.1.49</version> </dependency> ``` 3. **安装必要的构建工具和环境配置** 确保项目能够正常编译,并集成 Spring Boot 或其他容器管理框架的支持。 --- #### 三、具体迁移步骤 ##### 1. 移除 Hibernate 相关依赖 删除原有 Hibernate 所有的相关依赖库及其配置文件(如 `hibernate.cfg.xml` 和 HBM 映射文件)。这些内容将被新的 MyBatis-Plus 组件取代。 ##### 2. 添加 MyBatis-Plus 及其扩展包 更新 POM 文件以包含最新版本的 MyBatis-Plus 库及相关组件: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.1</version> </dependency> ``` ##### 3. 转换实体类定义方式 原 Hibernate 中可能存在的注解形式(例如 `@Entity`, `@Table`),需要调整成适合 MyBatis-Plus 使用的形式。例如: ```java @Data @TableName("project_task") public class ProjectTaskEntity { private Long id; private String projectTypeCode; // 原始字段保持不变 } ``` 注意这里采用了 `@TableName` 注解指定表名[^2]。 ##### 4. 创建 Mapper 接口 XML 文件替代 DAO 层逻辑 对于每一个原有的 Repository 或 DAO 类型接口,都需要创建相应的 Mapper 幖面。如果希望进一步降低耦合度,可以选择启用自动扫描路径加载的方式: 示例 Mapper 定义如下所示: ```java @Mapper public interface ProjectTaskMapper extends BaseMapper<ProjectTaskEntity> {} ``` 此操作利用了 MyBatis-Plus 提供的基础 CRUD 方法,从而省去了手动编码的时间消耗。 ##### 5. 自定义复杂查询语句处理 针对那些无法单纯依靠内置函数满足业务需求的情况,可以通过编写自定义 SQL 来解决。此时可以在对应 Mapper 下新增方法声明的同时附加 @Select/@Update 等标签说明执行细节;另外也可以单独建立 .xml 文档集中存放此类片段[^4]。 ##### 6. 测试验证阶段 最后一步是对整个转换后的系统进行全面测试,确保各部分衔接无误且数据交互稳定可靠。 --- ### 四、注意事项 - 在实际切换过程中可能会遇到一些兼容性问题,特别是当涉及到跨平台或多租户架构的时候[^1]。 - 若存在大量历史遗留代码,则建议分批次逐步推进改造计划而非一次性大范围改动以免引发不可控风险。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值