从头细说J2EE-4
作者头像
  • 马芳雪薇
  • 2019-10-07 08:46:44 8

MyBatis

(1)MyBatis 的前身是 Apache 开源项目 iBatis。iBatis 是“internet”和“abatis”的结合体,是一个基于 Java 的持久层框架。2010 年,该项目从 Apache Software Foundation 移至 Google Code 并更名为 MyBatis。2013 年 11 月,MyBatis 迁移到 GitHub 并由该平台维护至今。

(2)MyBatis 的主要优点在于灵活性,它可以替代 JDBC,并且支持接口编程。MyBatis 的数据访问层 DAO(Data Access Objects)无需实现具体的类,只需要一个接口和 XML(或注解)即可。MyBatis 提供了自动映射、动态 SQL、级联、缓存、注解以及 SQL 和代码分离等功能,使用便捷,并且可以优化 SQL 语句。由于其封装较少、映射多样、支持存储过程、能够进行 SQL 优化等特点,使得 MyBatis 成为了 Java 互联网应用中的首选持久化框架,逐渐取代了 Hibernate 的地位。

(3)虽然 Hibernate 是一种非常流行的框架,也有其不可替代的优势,但我们需要探讨它与 MyBatis 的差异。由于 MyBatis 和 Hibernate 都是持久层框架,并且都涉及数据库操作,因此我们定义了一个角色表 t_role,其结构如图所示。

根据这个角色表,我们可以创建一个 POJO 类(Plain Ordinary Java Object)来映射表中的字段,如代码清单所示:

```java package com.learn.chapter1.pojo;

public class Role implements java.io.Serializable { private Integer id; private String roleName; private String note;

// Setter and Getter methods

} ```

无论是 MyBatis 还是 Hibernate,都需要某种方式将数据库表和 POJO 映射起来,以便程序员可以通过操作 POJO 来完成相关逻辑。

Hibernate 简介

(1)要将 POJO 和数据库表映射起来,需要提供映射规则。因此,下一步就是提供这些映射规则,如图所示。

(2)在 MyBatis 或 Hibernate 中,可以通过 XML 或注解来提供映射规则。这里我们讨论的是 XML 方式,因为在 MyBatis 中,注解方式存在一定的限制,因此通常使用 XML 方式来进行映射。

(3)我们将 POJO 对象和数据库表互相映射的框架称为对象关系映射(Object Relational Mapping, ORM)。无论是 MyBatis 还是 Hibernate 都属于 ORM 框架,只是 Hibernate 更加注重面向 POJO 的设计,而 MyBatis 则有所不同。Hibernate 几乎不需要编写 SQL 语句,通过映射关系就能操作数据库,是一种全表映射的方式;而 MyBatis 则需要我们手动编写 SQL 语句来运行。

Hibernate 使用映射文件将 POJO 和数据库表进行关联,如代码清单所示。

首先,对 POJO 和表 trole 进行映射配置,将两者关联起来。然后,通过操作 POJO 来影响 trole 表的数据,比如对其执行增、删、查、改操作,可以按照代码清单所示的方式进行。

在这里,我们看不到 SQL 语句,这是因为 Hibernate 会根据映射关系自动生成相应的 SQL 语句。程序员不需要了解具体的 SQL 语句,只需要操作 POJO 就能完成对应数据库表的操作。这种设计在管理系统时代非常有用,因为管理系统首先关注的是业务逻辑的实现,其次是功能的实现,因此 Hibernate 成为了那个时代的主流持久化框架。

    本文来源:图灵汇
责任编辑: : 马芳雪薇
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
细说从头EE
    下一篇