当前位置: 首页 > news >正文

[000-01-011].第2节:持久层方案的对比

我的后端学习大纲

MyBatis学习大纲


1.持久层解决方案:

1.1.面试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规范)

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

a.Jdbc方案介绍:

1.jdbc学习:

  • 1.JDBC学习大纲

2.操作流程

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

3.使用JDBC的缺陷

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

b.Appache的DBUtils与Spring中的JdbcTemplate

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

c.Hibernate特点:

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

相关文章:

  • 鸿蒙(API 12 Beta3版)【使用ImageEffect编辑图片】图片开发指导
  • CSM数采系统助力高压动力系统的效率测量
  • 计算机四级必背-操作系统
  • 探索上门回收旧衣物系统源码开发的创新与挑战
  • Flutter Listview 缓存item滑动后不进行重新渲染
  • “论面向服务架构设计及其应用”写作框架,软考高级,系统架构设计师
  • Selenium与Web Scraping:自动化获取电影名称和评分的实战指南
  • 中级经济师考试通过率有多少?难度如何?
  • Android 架构模式之 MVP
  • 编程之路:从挫折到突破的心路历程
  • SQLite 插入一行并返回主键
  • 【人工智能】Transformers之Pipeline(十二):零样本物体检测(zero-shot-object-detection)
  • C# 获取当前电脑的mac地址
  • C#使用onnxruntime加载模型,部署到别人的PC上报错
  • UE5.4内容示例(5)UI_CommonUI - 学习笔记
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • JavaScript对象详解
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • laravel with 查询列表限制条数
  • Python爬虫--- 1.3 BS4库的解析器
  • SpriteKit 技巧之添加背景图片
  • vue 配置sass、scss全局变量
  • windows-nginx-https-本地配置
  • 产品三维模型在线预览
  • 扑朔迷离的属性和特性【彻底弄清】
  • 用jquery写贪吃蛇
  • 用mpvue开发微信小程序
  • UI设计初学者应该如何入门?
  • ‌‌雅诗兰黛、‌‌兰蔻等美妆大品牌的营销策略是什么?
  • #大学#套接字
  • (2020)Java后端开发----(面试题和笔试题)
  • (不用互三)AI绘画:科技赋能艺术的崭新时代
  • (待修改)PyG安装步骤
  • (二刷)代码随想录第16天|104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (回溯) LeetCode 40. 组合总和II
  • (九)c52学习之旅-定时器
  • (数据大屏)(Hadoop)基于SSM框架的学院校友管理系统的设计与实现+文档
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (一)80c52学习之旅-起始篇
  • (原創) 未来三学期想要修的课 (日記)
  • (转)ObjectiveC 深浅拷贝学习
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET Framework 4.6.2改进了WPF和安全性
  • .net wcf memory gates checking failed
  • .NET 直连SAP HANA数据库
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • /usr/bin/env: node: No such file or directory
  • ;号自动换行
  • @NestedConfigurationProperty 注解用法
  • @RestController注解的使用
  • @SentinelResource详解
  • [ 数据结构 - C++]红黑树RBTree
  • [1]从概念到实践:电商智能助手在AI Agent技术驱动下的落地实战案例深度剖析(AI Agent技术打造个性化、智能化的用户助手)