MyBatis详解1.概述

作者: 卢卡斯哔哔哔 | 来源:发表于2019-01-21 15:57 被阅读15次

    点击进入我的博客

    1 JDBC编程

    什么是JDBC
    • Java程序都是通过JDBC(Java Data Base Connectivity)连接数据库的,这样我们就可以通过SQL对数据库编程。
    • JDBC是由SUN公司提出的一系列规范,但是它只定义了接口规范,而具体的实现是交由各个数据库厂商去实现的,因为每个数据库都有其特殊性,所以JBC就是一种典型的桥接模式。
    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之所以是半自动的,是因为它需要手工匹配提供POJO、SQL和映射关系,而全表映射的Hibernate只需要提供POJO和映射关系便可。
    • MyBatis所需要提供的映射文件包含以下三个部分:SQL、映射规则、POJO。
    MyBatis的ORM映射模型
    什么时候用MyBatis
    1. JDBC的方式在目前而言极少用到
    2. Hibernate作为较为流行的Java ORM框架,它确实编程简易,需要我们提供映射的规则,完全可以通过IDE生成,同时无需编写SQL确实开发效率优于MyBatis。但他的上述介绍过的一些缺点,注定了 Hibernate只适用于在场景不太复杂,要求性能不太苛刻的时候使用。
    3. 如果你需要一个灵活的、可以动态生成映射关系的框架,那么MyBatis确实是一个最好的选择。它的缺陷是需要你提供映射规则和SQL,所以它的开发工作量比Hibernate略大一些。

    相关文章

      网友评论

        本文标题:MyBatis详解1.概述

        本文链接:https://www.haomeiwen.com/subject/bqpedqtx.html