[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学习:

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的简单封装

c.Hibernate特点:

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

相关推荐
alien爱吃蛋挞21 小时前
【JavaEE】万字详解Mybatis(上)
数据库·java-ee·mybatis
我命由我1234521 小时前
Android 开发 Room 数据库升级问题:A migration from 6 to 7 was required but not found.
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
鸽鸽程序猿3 天前
【JavaEE】【SpringCloud】 熔断和限流 Alibaba Sentinel
spring cloud·java-ee·sentinel
乌暮3 天前
JavaEE初阶--从基础到实战:Java 文件操作与数据流读写核心知识点总结
java·java-ee
洛_尘4 天前
Java EE进阶8:MyBatis 操作数据库(入门)
java·java-ee
我命由我123454 天前
Java 开发 - Objects 的 requireNonNull 方法
java·服务器·开发语言·后端·学习·java-ee·学习方法
Chan164 天前
《Redis设计与实现》| 常用数据类型与AOF、RDB持久化
java·开发语言·redis·spring·面试·java-ee
jIwwMTdC4 天前
用Comsol模拟锂金属电池负极锂枝晶生长:从小白到上手
java-ee
洋不写bug4 天前
JavaEE基础,计算机是如何工作的
java·java-ee·状态模式
她说..4 天前
验签实现方案整理(签名验证+防篡改+防重放)
java·经验分享·spring boot·java-ee·bladex