发布时间:2022-08-18 18:47
持久化是指将数据存储到可永久保存的存储设备中,持久化的主要应用场景是将内存中的对象存储到数据库,XML 数据文件或其他种类的磁盘文件中。 在JAVA编程中,常见的持久化方式是将程序产生的数据存储到数据库中,而JDBC 则是实现这一过程的重要工具JDBC(JAVA DATABASE Connectivity) java 数据库连接的简写,它是一套用于SQL语句的JAVA API ,是Java 程序访问数据库的标准规范,应用程序在使用JDBC 访问特定的数据库时,需要与不同的数据库驱动进行连接,JDBC 提供接口,而驱动是接口的实现,没有驱动将无法完成数据库的连接。
应用程序--->JDBC---->Mysql 驱动------->Mysql 数据库 应用程序--->JDBC---->Oracle 驱动----->Oracle 数据库
JDBC 的体系结构:
JDBC API:面向程序,供JAVA 程序开发人员使用
JDBC Driver Manager : 注册数据库驱动,供Java 程序开发人员使用
JDBC Driver API: 通过数据库,供数据库厂商使用
API 通过 Driver Manager (驱动管理器) 实现与数据库的透明连接,提供获取数据的连接,执行Sql 语句,获得结果等功能,JDBC API 使开发人员获得了标准的,纯JAVA 的数据库程序设计接口,在JAVA 程序中为访问任意类型的数据库提供支持。
编写一个JDBC 程序分为以下6个步骤:
1. 加载并注册数据库驱动(Driver类);
2.获取数据库连接(Connection对象);
3.获取Sql 语句执行者(Statement对象)
4.执行Sql语句。
5.操作结果集(ResultSet对象)
6.回收数据库资源
public class DBUtils{
// -------------------获取连接对象的工具类应用-------------------------
static {
// 优先加载,且只加载一次
try{
Class.forName("com.mysql.jdbc.Driver");
}catch {
e.printStackTrackTrace();
}
}
public static Connection getConnection(){
Connetcion conn=null;
try{
conn=DriverManager.getConnection("jdbc:mysql:///lhp","root","123");
}catch(SQLException e){
e.printStackTrace();
}
return conn;
}
}
加载类时,将执行被加载类的静态代码块,而com.mysql.jdbc.Driver类有一个静态代码块:
DirverManager类是一个驱动管理类,管理一组JDBC 驱动程序,它通过属性drivers存入很多驱动类,当DriverManager获取连接的时候,它会把dirvers里的各个驱动的URL和创建连接时传进来的URL逐一比较,遇到对应的URL,则会尝试建立连接,通过DriverManager 获取连接(Connnettion对象);
获取SQL语句执行者(Statement对象)
Connection对象提供了3种获取Sql 语句执行者(Statement对象)的方法,其中createStatement() 方法获取Statement 对象,调用 prepareStatement()方法获取PrepareStatement对象,调用PrepareCall() 方法获取CallableStatement对象:
其中 preparedStatement 对象和 CallableStatement对象,还需要传入String类型的Sql语句作为参数。
Statement 对象提供了 3 种方法执行Sql 语句,其中,execute()方法可以执行任何Sql 语句,executeUpdate()方法用于执行 DDL语句和DML语句,执行DDL 语句时,返回值为0,执行DML 语句时,返回值为影响的行数,executeQuery()方法用于执行实现查询功能的Sql语句,返回值是一个结果集(ResultSet对象)。
executeQuery(sql) 执行结果ResultSet 封装了 执行查询Sql 语句后返回的结果,程序可以通过遍历结果获取每一行的数据,ResultSet对象具有执行其当前数据的指针,在最开始的时候指针被置于第一行之前,可调用ResultSet接口的next() 方法将指针移动到下一行,在实际应用中常将ResultSet接口的next()方法放在while()循环中,如果有下一行,则返回为True,遍历继续进行,如果没有下一行,则返回为 False,遍历结束。
回收数据库资源:
为了节省资源,提升性能,包括Connection,Statement,ResultSet 在内的JDBC 资源在使用后要及时关闭,正确的关闭顺序为,先得到的后关闭,后得到的先关闭: