互联网技术IT交流圈Java基础Spring全家桶

MyBatis详解1.概述

2019-01-21  本文已影响15人  卢卡斯哔哔哔

点击进入我的博客

1 JDBC编程

什么是JDBC
JDBC编程过程
    public void func() throws Exception {
        Class.forName("com.mysql.jdbc.Driver");

        String url = "jdbc:mysql://localhost:3306/test";
        String username = "root";
        Connection connection = DriverManager.getConnection(url, username, null);

        PreparedStatement ps = connection.prepareStatement("SELECT * FROM tb_name LIMIT 1");
        ResultSet rs = ps.executeQuery();
        while (rs.next()) {
            System.out.println("Id = " + rs.getString("id") + "  Name = " + rs.getString("name"));
        }
       
        rs.close();
        ps.close();
        connection.close();
    }
  1. 使用JDBC编程需要连接数据库,注册驱动和数据库信息。
  2. 操作Connection,打开Statement对象。
  3. 通过Statement执行SQL,返回结果到ResultSet对象。
  4. 使用ResultSet读取数据。
  5. 关闭数据库相关资源。
传统JDBC的弊端
  1. 工作量相对较大,我们需要先连接、处理JDBC底层事务、处理数据类型;还要操作Connection对象、Statement对象、Resultset对象去拿到数据,并准确关闭它们。
  2. 我们要对JDBC编程可能产生的异常进行捕捉处理并正确关闭资源。

2 什么是ORM

ORM(Object Relational Mapping,对象关系映射)模型就是数据库的表简单Java对象(POJO)的映射关系模型,它主要解决数据库数据和POJO对象的相互映射。通过这层映射关系就可以简单迅速地把数据库表的数据转化为POJO,以便程序员更加容易理解和应用Java程序

ORM映射模型

3 Hibernate

Hibernate是建立在若干POJO通过XML映射文件(或注解)提供的规则映射到数据库表上的。换句话说,我们可以通过POJO直接操作数据库的数据。它提供的是一种全表映射的模型,使用者不需要编写SQL语言,只要使用HQL语言(Hibernate Query Langurage)就可以了。


image.png
Hibernate的优势
  1. 消除了代码的映射规则,它全部被分离到了XML或者注解里面去配置。
  2. 无需再管理数据库连接,它也配置在XML里面。
  3. 一个会话中,不要操作多个对象,只要操作 Session对象即可。
  4. 关闭资源只需要关闭一个Session便可。
Hibernate的不足
  1. 全表映射带来的不便,比如更新时需要发送所有的字段。
  2. 无法根据不同的条件组装不同的SQL。
  3. 对多表关联和复杂SQL査询支持较差,需要自己写SQL,返回后自己将数据组装为POJO。
  4. 不能有效支持存储过程。
  5. 虽然有HQL,但是性能较差,大型互联网系统往往需要优化SQL,而Hibernate做不到。

4 MyBatis

为了解决 Hibernate的不足,一个半自动映射的框架MyBatis应运而生。

什么是半自动
MyBatis的ORM映射模型
什么时候用MyBatis
  1. JDBC的方式在目前而言极少用到
  2. Hibernate作为较为流行的Java ORM框架,它确实编程简易,需要我们提供映射的规则,完全可以通过IDE生成,同时无需编写SQL确实开发效率优于MyBatis。但他的上述介绍过的一些缺点,注定了 Hibernate只适用于在场景不太复杂,要求性能不太苛刻的时候使用。
  3. 如果你需要一个灵活的、可以动态生成映射关系的框架,那么MyBatis确实是一个最好的选择。它的缺陷是需要你提供映射规则和SQL,所以它的开发工作量比Hibernate略大一些。
上一篇 下一篇

猜你喜欢

热点阅读