Java的MySQL数据库连接库
参考链接:
# JDBC
JDBC 是 Java 程序访问数据库的标准接口, 全称是 Java DataBase Connectivity 。
Java 程序访问数据库时,不是直接通过TCP连接直接与数据库交换数据,而是通过 JDBC 接口调用数据库厂商提供的驱动, 由驱动进行创建管理TCP连接。驱动的本质为实现了JDBC接口的jar包 。
开发者可以直接面向JDBC接口开发,而不用考虑不同数据库驱动的具体实现细节, 面向接口开发降低了耦合行,可以很方便地替换JDBC的实现类(驱动)来达到替换数据库的目的。
Java APP -> JDBC Interface --------> MySQL Driver -------> MySQL Server
| | --impl--> | --TCP--> |
▼ ▼ ▼ ▼
U JVM Oracle Oracle
2
3
4
JDBC接口的代码位于 java.sql
包中。 下面是一段JDBC接口的示例代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBC {
public static void main(String[] args) {
String JDBC_URL = "jdbc:mysql://localhost:3306/test";
String JDBC_USER = "root";
String JDBC_PASSWORD = "password";
// 1.获取数据库连接
try (Connection conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD)) {
// 2. 创建Statement对象
try (Statement stmt = conn.createStatement()) {
// 3. 执行SQL语句
try (ResultSet rs = stmt.executeQuery("select * from user")) {
// 4. 处理结果集
while (rs.next()) {
long id = rs.getLong(1); // 注意:索引从1开始
String name = rs.getString(2);
}
}
}
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
执行一个SQL并获得结果的步骤:
- 创建一个连接
- 创建Statement对象
- 执行SQL语句
- 处理结果集
Connection
, Statement
, ResultSet
都是资源对象,所以放在 try() 中,代码块异常或者执行结束时可以自动关闭。
创建一个TCP连接的成本是很高的,所以一个连接可以在程序中共享,但是TCP连接何时创建,何时回收又是管理的难题。 jvm 又提供了 JDBC连接池
接口 javax.sql.DataSource
, 来帮助维护一定数量的TCP连接。但是这只是一个接口,要使用JDBC连接池,就要选择一个连接池的实现,常见的连接池有:
- Druid
- HikariCp
# JDBC 连接池
javax.sql.DataSource 接口
Druid 连接池获取连接例子。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.11</version>
</dependency>
2
3
4
5
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setUrl("jdbc:mysql://localhost:3306/learnjdbc");
druidDataSource.setUsername("root");
druidDataSource.setPassword("puhou");
// javax.sql.Connection
Connection connection = druidDataSource.getConnection();
2
3
4
5
6
通过配置连接池的其他配置,就可以动态的调整数据库TCP连接数,不用临时单开线程创建连接,使得程序运行更加高效。Druid是用来管理数据库连接的。
# ORM
Object Relation Mapping 对象关系映射。将数据表和对象进行映射,把数据表的字段和对象的属性进行映射。直接通过操作对象属性类操作数据表,不用编写SQL语句。ORM是一种通过操作对象属性来操作数据表的思想。
# JPA
Java Persistence API的缩写,Java 持久层 API. Hibernate 是JPA 的一个实现。 JPA定义了一些实现ORM思想的方法
Java Persistence API --------> Hibernate ----> Object ----> ORM ----> SQL Server
| --impl--> | |
▼ | |
▼ ▼
Spring Data JPA Generate SQL
2
3
4
5
# Mybatis
Mybatis是一个基于Java的数据库操作框架,通过 xml 映射的方式简化了代码,可以将方法直接映射到SQL语句,也可以直接将运行结果映射到实体类中。这样在上层的操作中,实现了调用一个方法返回了一个带有数据库数据的实体类。省去了额外的JDBC步骤。
EntieyType Dao.xxx();
Dao ----> XML ----> SQL ----> SQL SERVER ----> RAW Data - --> XML ----> Entity
|<------------------------MyBtais --------------------------------->|
2
3