首页 > 其他分享 >mybatis和jdbc有啥区别

mybatis和jdbc有啥区别

时间:2024-02-23 18:11:55浏览次数:30  
标签:jdbc 区别 数据库 JDBC SQL mybatis 操作

JDBC是Java提供的一个操作数据库的API,是一种规范;

mybatis是一个持久层框架,用java编写的.
他封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动,创建连接等繁杂过程.
他使用了ORM思想实现了结果集的封装
(ORM:Object Relational Mapping 对象关系映射
简单的说:就是把数据库表和实体类及实体类的属性对应起来,
让我们可以操作实体类就实现操作数据库表)

MyBatis是一个持久层ORM框架,底层是对JDBC的封装。
MyBatis对JDBC操作数据库做了一系列的优化:
(1) mybatis使用已有的连接池管理,避免浪费资源,提高程序可靠性。
(2) mybatis提供插件自动生成DAO层代码,提高编码效率和准确性。
(3) mybatis 提供了一级和二级缓存,提高了程序性能。
(4) mybatis使用动态SQL语句,提高了SQL维护。(此优势是基于XML配置)
  sql写在xml里,便于统一管理和优化。解除sql与程序代码的耦合。
(5) 提供对象关系映射标签,支持对象与数据库的orm字段关系映射

jdbc的缺点:
  1.频繁创建连接,浪费资源
  2.SQL语句硬编码,不利于维护
  3.传参是硬编码,不利于维护
  4.结果集是硬编码,不利于维护

传统JDBC操作数据:
  使用JDBC编程需要连接数据库,注册驱动和数据库信息 操作Connection,
  打开 Statement 对象 。
  通过Statement执行SQL, 返回结果到ResultSet对象。
  使用ResultSet读取数据,然后通过代码转化为具体的POJO对象。
  关闭数据库的相关资源。

扩展: hibernate的区别:
  消除了代码的映射规则,它全部被分离到XML或者注解里面去配置。
  无需再管理数据库连接,它也配置到XML里面。 一个会话中,不要操作多个对象,只要操作Sesison即可。
  关闭资源只需要关闭一个Session即可。

ps:
mybatis 提供了一级和二级缓存详解

标签:jdbc,区别,数据库,JDBC,SQL,mybatis,操作
From: https://www.cnblogs.com/liyunxi/p/18030141

相关文章

  • react类组件和函数组件的区别
    1.类组件importTarofrom'@tarojs/taro';import{Component,useState}from'react'classClasstestextendsComponent{constructor(props){super(props);this.state={count:0};}//组件挂载到DOM后立即调用,也就是在组件的......
  • Java锁的思想和区别
    乐观锁VS悲观锁乐观锁和悲观锁是两种处理并发访问的不同策略,用于确保多个操作不会同时修改同一资源而导致数据不一致的问题。它们的区别在于处理并发时的思想和实现方式:乐观锁:思想:认为在大多数情况下,读操作远远多于写操作,因此假设在绝大多数情况下并发冲突是不会发生的,直到出......
  • mybatis—mapper.xml里的多种写法举例
    mybatis—mapper.xml里的多种写法举例目录mybatis—mapper.xml里的多种写法举例向一个表里插入另一个表的一些数据并进行取舍需要查询的select后的字段如果有不少语句都一致的话可以考虑单独提出来更新删除in语句面对集合和字符串<trim>标签<choose>标签判断<when>、<other......
  • mysql面试高频问题---事务undo log和redo log的区别
    事务undolog和redolog的区别1.问题undolog和redolog都是mysql的日志文件,但是功能不一样。缓冲池(bufferpool):主内存中的一个区域,里面可以缓存磁盘上经常操作的真实数据,在执行增删改查操作时,先操作缓冲池中的数据(若缓冲池没有数据,则从磁盘加载并缓存),以一定频率刷新到磁......
  • continue和break的区别
    continue和break的区别主要体现在它们在循环语句中的作用和用法上。以下是它们的主要区别:作用不同。break用于完全结束一个循环,跳出循环体执行循环后面的语句;continue用于终止本次循环,接着还执行后面的循环。使用场景不同。break通常用于当循环中的某些条件被满......
  • java中 break和continue区别
    breakcontinue◆break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环不执行循环中剩余的语句。(break语句也在switch语句中使用)◆continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句接着进行下一次是否执行循环的判......
  • Field getType 和 getDeclaringClass 两个方法啥区别
    getType()和getDeclaringClass()是Java反射(Reflection)API中Field类的两个方法。这两个方法分别提供了关于字段(Field)的不同信息。以下是它们之间的主要区别:getType()getType()方法返回Field对象表示的字段的Class对象。它表示字段的类型,即字段可以持有的值的类......
  • IDS、IPS和防火墙的区别
    IDS(入侵检测系统)IDS是一种可以监视网络和系统活动的设备或应用程序,用于检测恶意活动或违反政策的行为。IDS主要有两种类型:网络入侵检测系统(NIDS)和主机入侵检测系统(HIDS)。NIDS监视整个网络的流量,而HIDS则监视单个主机。​​​​​​​​​IDS工作原理IDS(入侵检测系统)工作的基......
  • wget、axel、aria2区别与用法
    首先区别是:wget、axel和aria2都是在命令行下使用的下载工具,但它们在功能和特性上有一些区别。wget是最基础的命令行下载工具,它支持HTTP、HTTPS和FTP协议,并且可以在慢速或不稳定的网络连接下保持健壮性。如果下载过程中发生网络问题,wget会尝试重新下载,直到整个文件下载完成。此外......
  • LPDDR与DDR区别
    在介绍LPDDR与DDR的区别前,首先叙述二者的发展历史。计算机的存储器分为两种:RAM和ROM。而RAM也分为两种:SRAM和DRAM。随着对CPU主频提高和RAM容量增大的需求,DRAM不断发展,从SDRAM到DDR。DDR一直更新换代,电压更低、速率翻倍、容量翻倍,最新已到DDR5。DDR适用于高性能计算设备等领域,......