JDBC概述和原理
- JDBC目录
数据库连接池可以优化对数据库的操作,提高效率
JDBC的概述
- jdbc原理图
不同的数据库的厂商制作的数据库的底层结构不同,如果使用Java来操作数据库,不同的数据库操作的方法不同。将造成管理困难 - java定义接口进行改进
此时的接口调用由各个数据库实现,java只是负责调用各个厂商实现的方法(具体的实现肯定不同)即可。
此时方法的调用就统一了。而且避免了由java直接去调用数据库
各个厂家将实现的类打包成jar文件,或者称为驱动文件/类
想要连接哪个厂家的数据库必须要有这个厂商提供的驱动文件
JDBC模拟实现
假设我们就是java厂商来定义这个接口和假设是各个数据库的厂商来定义接口的实现类
模拟java厂商对Jdbc接口的定义
package com.hsp.edu;
//自定义jdbc接口(该接口用于指定连接和使用数据库的标准,由java实现)
public interface JdbcInterface {
//1.连接数据库
public Object getConnecttion();
//2.crud操作
public void crud();
//3.关闭连接
public void close();
}
模拟mysql厂商对接口实现类的定义
package com.hsp.edu;
//模拟mysql厂商实现java定义的接口
public class MysqlJdbcImplement implements JdbcInterface {
@Override
public Object getConnecttion() {
System.out.println("得到mysql的连接");
return null;
}
@Override
public void crud() {
System.out.println("进行mysql的增删改查");
}
@Override
public void close() {
System.out.println("关闭mysql的连接");
}
}
模拟Oracle厂商实现对接口实现类的定义
package com.hsp.edu;
//模拟Oracle公司实现java定义的接口
public class OracleImplement implements JdbcInterface {
@Override
//连接Oracle数据库
public Object getConnecttion() {
System.out.println("连接Oracle数据库");
return null;
}
@Override
//完成增删改查
public void crud() {
System.out.println("完成对Oracle的增删改查");
}
@Override
public void close() {
System.out.println("关闭Oracle的连接");
}
}
测试类
package com.hsp.edu;
public class JdbcTest {
public static void main(String[] args) {
JdbcInterface jdbcInterface= new OracleImplement();//通过接口来调用实现类(动态绑定)
//完成对mysql的操作
jdbcInterface.getConnecttion();//连接数据库
jdbcInterface.crud();//完成增删改查操作
jdbcInterface.close();//关闭数据库的连接
}
}
- 首先我们使用mysql的实现类来作为接口的测试类
- 通过接口来调用mysql厂商实现运用mysql的方法
此时我们通过改变接口的实现类对象来调用Oracle数据库
从上面我们可以发现此时java实现对不同数据库的调用只需要改变接口的实现类即可。从而简化了编程
- 假设直接使用java去操作数据库
- 1.调用的方法不统一
- 2.假如数据库升级,将可能会连接失败。将连接操作交给各个数据库厂商,我们只用更换jar包即可
我们以后学就只用去学,接口里面有那些方法,类里面有那些方法。怎样去使用更规范
总结
不可取,太暴力
- JDBC API主要存在于下面的包中