[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

相关文章

C++高效内存池实现减少动态分配开销的解决方案

《C++高效内存池实现减少动态分配开销的解决方案》C++动态内存分配存在系统调用开销、碎片化和锁竞争等性能问题,内存池通过预分配、分块管理和缓存复用解决这些问题,下面就来了解一下... 目录一、C++内存分配的性能挑战二、内存池技术的核心原理三、主流内存池实现:TCMalloc与Jemalloc1. TCM

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Java死锁问题解决方案及示例详解

《Java死锁问题解决方案及示例详解》死锁是指两个或多个线程因争夺资源而相互等待,导致所有线程都无法继续执行的一种状态,本文给大家详细介绍了Java死锁问题解决方案详解及实践样例,需要的朋友可以参考下... 目录1、简述死锁的四个必要条件:2、死锁示例代码3、如何检测死锁?3.1 使用 jstack3.2

html 滚动条滚动过快会留下边框线的解决方案

《html滚动条滚动过快会留下边框线的解决方案》:本文主要介绍了html滚动条滚动过快会留下边框线的解决方案,解决方法很简单,详细内容请阅读本文,希望能对你有所帮助... 滚动条滚动过快时,会留下边框线但其实大部分时候是这样的,没有多出边框线的滚动条滚动过快时留下边框线的问题通常与滚动条样式和滚动行

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Java空指针异常NullPointerException的原因与解决方案

《Java空指针异常NullPointerException的原因与解决方案》在Java开发中,NullPointerException(空指针异常)是最常见的运行时异常之一,通常发生在程序尝试访问或... 目录一、空指针异常产生的原因1. 变量未初始化2. 对象引用被显式置为null3. 方法返回null

Linux中的more 和 less区别对比分析

《Linux中的more和less区别对比分析》在Linux/Unix系统中,more和less都是用于分页查看文本文件的命令,但less是more的增强版,功能更强大,:本文主要介绍Linu... 目录1. 基础功能对比2. 常用操作对比less 的操作3. 实际使用示例4. 为什么推荐 less?5.

宝塔安装的MySQL无法连接的情况及解决方案

《宝塔安装的MySQL无法连接的情况及解决方案》宝塔面板是一款流行的服务器管理工具,其中集成的MySQL数据库有时会出现连接问题,本文详细介绍两种最常见的MySQL连接错误:“1130-Hostisn... 目录一、错误 1130:Host ‘xxx.xxx.xxx.xxx’ is not allowed