Spring Data Jdbc和JdbcTemplate知识概括知识概括
JDBC简介
简介:
- 为了使 JDBC 更加易于使用, Spring 在 JDBC API 上定义了一个抽象层, 以此建立一个 JDBC 存取框架. 作为Spring JDBC 框架的核心
- JDBC 模板的设计目的是为不同类型的 JDBC 操作提供模板方法. 每个模板方法都能控制整个过程, 并允许覆盖过程中的特定任务.通过这种方式, 可以在尽可能保留灵活性的情况下, 将数据库存取的工作量降到最低.
spring-boot-starter-jdbc:
spring-boot-starter-jdbc
也就是创建项目时下图中的JDBC API
,也就是JDBCTemplate
。
- SpringBoot里的spring-boot-starter-jdbc包就是Spring JDBC包。
- spring-boot-starter-jdbc主要提供了三个功能:
①对数据源的装配,
②提供一个JdbcTemplate简化使用,
③事务
spring-boot-starter-data-jdbc:
spring-boot-starter-data-jdbc
就是spring data jdbc
。- 链接:
①spring data jdbc 实战
②spring data jdbc 详解 - spring data jdbc 相比于 spring data jpa:
①轻巧,快速且开销低
。 只有少数几个类, 没有XML,注释,反射
②这不是成熟的ORM 。没有关系处理,延迟加载,脏检查,缓存
③在几秒钟内实现CRUD
④对于JPA过大的小型应用程序,在需要简单性或考虑将来迁移到JPA时使用
⑤对数据库方言差异的最小化支持(例如,透明的结果分页)
⑥总结来说:破产版spring data jpa!
JDBC方法概述
方法概述:
JDBC和JPA
JDBC:
- jdbc(Java DataBase Connectivity)是java连接数据库操作的原生接口。JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。作为API,JDBC为程序开发提供标准的接口,并为各个数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。一句话概括:jdbc是所有框架操作数据库的必须要用的,由数据库厂商提供,但是为了方便java程序员调用各个数据库,各个数据库厂商都要实现jdbc接口。
JPA:
- jpa(Java Persistence API)是java持久化规范,是orm框架的标准,主流orm框架都实现了这个标准。Sun引入新的JPA ORM规范出于两个原因:其一,简化现有Java EE和Java SE应用开发工作;其二,Sun希望整合ORM技术,实现天下归一。
ORM是一种思想,是插入在应用程序与JDBC API之间的一个中间层,JDBC并不能很好地支持面向对象的程序设计,ORM解决了这个问题,通过JDBC将字段高效的与对象进行映射。
具体实现有hibernate、spring data jpa、open jpa。 - spring data jpa是对jpa规范的再次抽象,底层还是用的实现jpa的hibernate技术。
- hibernate是一个标准的orm框架,实现jpa接口。
- mybatis也是一个持久化框架,但不完全是一个orm框架,不是依照的jpa规范。
jdbc和jpa的区别:
- 本质上,这两个东西不是一个层次的,jdbc是数据库的统一接口标准,jpa是orm框架的统一接口标准。
- 用法有区别,jdbc更注重数据库,orm则更注重于java代码,但是实际上jpa实现的框架底层还是用jdbc去和数据库打交道。
spring jdbc与spring data jdbc,原生jdbc的联系
原生JDBC:
- 在原生的JDBC开发中,我们通常会先定义一个DAO接口,这里我们只举一个例子查询所有学生
public interface StudentDAO {
/**
* 查询所有学生
* @return 所有学生
*/
public List<Student> query();
}
- 实现StudentDAO接口:
public class StudentDAOImpl implements StudentDAO{
@Override
public List<Student> query() {
List<Student> students = new ArrayList<Student>();
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
String sql = "select id,