[001-05-001].持久层解决方案的对比

2024-09-01 09:04

本文主要是介绍[001-05-001].持久层解决方案的对比,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我的后端学习大纲

MyBatis学习大纲


1.请说一说持久层解决方案有哪些???

  • 1.jdbc
    • JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。
  • 2.DBUtils:
    • DBUtils是一个小型的类库, 是一个jdbc的工具,主要是为了简化jdbc的代码使JDBC编程更加方便,简单。
    • 在JDBC编程中,资源的关闭是显式的,极易导致编程出现错误,DBUtils把这些工作抽象出来,使得程序员编程时仅需要关心正真的问题,即对数据库的增删改查
  • 3.JdbcTemplate
    • JdbcTemplate是Spring提供的一个JDBC模板类,是对JDBC的封装,简化JDBC代码
  • 4.MyBatis
  • 5.Hibernate(实现了JPA规范)
  • 8.Spring Data(实现了JPA规范)

2.持久层各解决方案的对比:

2.1.Jdbc方案介绍:

a.jdbc学习:

  • 1.JDBC学习大纲

b.操作流程

  • 加载数据库驱动
  • 通过驱动管理,获取数据库的连接
  • 编写sql语句,使用?表示占位符
  • 获取预处理statemennt,执行查询
  • 设计传参
  • 结果集处理
  • 释放资源,关闭数据库连接

c.使用JDBC的缺陷

  • 代码比较多,开发效率低
  • 需要关注 Connection ,Statement, ResultSet 对象创建和销毁
  • 对 ResultSet 查询的结果,需要自己封装为 List
  • 重复的代码比较多些
  • 业务代码和数据库的操作混在一起,SQL语句写死在Java程序中,不灵活。改SQL的话就要改Java代码。违背开闭原则OCP
    在这里插入图片描述
    在这里插入图片描述

2.2.Appache的DBUtils与Spring中的JdbcTemplate

  • 1.DBUtils它和Spring中的JdbcTemplate很像,是对Jdbc的简单封装
    • JdbcTemplate是对Jdbc的简单封装的
    • [说明]以上这些都不是框架,是一种 JDBC是规范;Spring中的JdbcTemplateAppache的DBUtils都只是工具类
  • 2.JDBC -> Dbutils ->jdbcTemplate;使用这些工具类,功能简单,sql语句是编写在了java代码里面,耦合度较高,而框架是一个整体的解决方案,所以就诞生了很多框架

2.3.Hibernate特点:

  • 1.长难复杂SQL,对于Hibernate而言处理也不容易
  • 2.内部自动生产的SQL,不容易做特殊优化。
  • 3.基于全映射的全自动框架,大量字段的POJO进行部分映射时比较困难。 导致数据库性能下降
    在这里插入图片描述
  • 4.Hibernate框架就是一个全自动化的ORM。使用Hibernate框架的时候,不需要程序员手动编写SQL语句,SQL语句可以自动生成。所以Hibernate是一个完全的全自动化的ORM框架。半自动步枪和全自动突击步枪,一个精度准火力不足,一个火力猛精度不够。

这篇关于[001-05-001].持久层解决方案的对比的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1126503

相关文章

Java.lang.InterruptedException被中止异常的原因及解决方案

《Java.lang.InterruptedException被中止异常的原因及解决方案》Java.lang.InterruptedException是线程被中断时抛出的异常,用于协作停止执行,常见于... 目录报错问题报错原因解决方法Java.lang.InterruptedException 是 Jav

kkFileView在线预览office的常见问题以及解决方案

《kkFileView在线预览office的常见问题以及解决方案》kkFileView在线预览Office常见问题包括base64编码配置、Office组件安装、乱码处理及水印添加,解决方案涉及版本适... 目录kkFileView在线预览office的常见问题1.base642.提示找不到OFFICE组件

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi

详解MySQL中JSON数据类型用法及与传统JSON字符串对比

《详解MySQL中JSON数据类型用法及与传统JSON字符串对比》MySQL从5.7版本开始引入了JSON数据类型,专门用于存储JSON格式的数据,本文将为大家简单介绍一下MySQL中JSON数据类型... 目录前言基本用法jsON数据类型 vs 传统JSON字符串1. 存储方式2. 查询方式对比3. 索引

WinForm跨线程访问UI及UI卡死的解决方案

《WinForm跨线程访问UI及UI卡死的解决方案》在WinForm开发过程中,跨线程访问UI控件和界面卡死是常见的技术难题,由于Windows窗体应用程序的UI控件默认只能在主线程(UI线程)上操作... 目录前言正文案例1:直接线程操作(无UI访问)案例2:BeginInvoke访问UI(错误用法)案例

Spring Security常见问题及解决方案

《SpringSecurity常见问题及解决方案》SpringSecurity是Spring生态的安全框架,提供认证、授权及攻击防护,支持JWT、OAuth2集成,适用于保护Spring应用,需配置... 目录Spring Security 简介Spring Security 核心概念1. ​Securit

MySQL逻辑删除与唯一索引冲突解决方案

《MySQL逻辑删除与唯一索引冲突解决方案》本文探讨MySQL逻辑删除与唯一索引冲突问题,提出四种解决方案:复合索引+时间戳、修改唯一字段、历史表、业务层校验,推荐方案1和方案3,适用于不同场景,感兴... 目录问题背景问题复现解决方案解决方案1.复合唯一索引 + 时间戳删除字段解决方案2:删除后修改唯一字

SpringBoot中六种批量更新Mysql的方式效率对比分析

《SpringBoot中六种批量更新Mysql的方式效率对比分析》文章比较了MySQL大数据量批量更新的多种方法,指出REPLACEINTO和ONDUPLICATEKEY效率最高但存在数据风险,MyB... 目录效率比较测试结构数据库初始化测试数据批量修改方案第一种 for第二种 case when第三种

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

全面解析MySQL索引长度限制问题与解决方案

《全面解析MySQL索引长度限制问题与解决方案》MySQL对索引长度设限是为了保持高效的数据检索性能,这个限制不是MySQL的缺陷,而是数据库设计中的权衡结果,下面我们就来看看如何解决这一问题吧... 目录引言:为什么会有索引键长度问题?一、问题根源深度解析mysql索引长度限制原理实际场景示例二、五大解决