JDBC(Java语言连接数据库)
- JDBC本质
- 整体结构
- 基层实现过程(即用记事本而不是idea)
- 第一种实现方式
- 第二种实现方式
- 乐观锁和悲观锁
- 乐观锁
- 悲观锁
JDBC本质
整体结构
基层实现过程(即用记事本而不是idea)
第一种实现方式
(1)下载对应厂家数据库的jar包
(2)配置环境变量(用于提示运行时jar包的位置)——因为是用底层实现,所以不是用idea
(3)JDBC编程六步
1.注册驱动——传输的参数是驱动对象而不是字符串
2.获取连接
3.获取数据库操作对象
4.执行SQL语句
5.处理查询结果集
6.释放资源
第二种实现方式
第二种方式是通过Java的映射机制,将已有的数据库驱动函数映射过来使用,只需要传入字符串参数
com.mysql.jdbc.Driver
即可,由于所传参数是字符串,所以可以将配置信息存放到.properties中,这样方便程序员的客户自己修改配置信息等
使用这个方法需要使用资源绑定器绑定属性配置文件
//获取配置文件中的属性
ResourceBundle bundle = ResourceBundle .getBundle("jdbc");
String driver = bundle.getString("driver ");
String url= bundle.getString("url");
String user= bundle.getString("user");
String password= bundle.getString("password");//1.加载驱动
Class.forName(driver);//固定,映射机制
System.out.println("加载驱动成功!");
//2.连接
Connection connection= null;//连接对象(注意与java不同,创建对象不用new)
String dbURL = url;//ip地址、端口、数据库名
connection= DriverManager.getConnection(dbURL, user, password);
.properties文件中
serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=shejiashuai
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_test?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
乐观锁和悲观锁
乐观锁
允许并发,不过要实现互斥,类似P、V操作
过程(如有两个并发进程要更新同一条记录,此记录初始的版本号是1):
1.进程1修改记录,此时进程1记下记录更新前的版本是1
2.在进程1还没有结束的时候,进程2也要更新这条记录,并记下此时记录的版本号是1
3.进程1先更新完,记录的版本号自增变成2
4.最后进程2更新完记录,但是回来发现记录的版本号变成了2,不是它原来所记录的版本号1了,所以进程2要重新更新 新的记录
悲观锁
不允许并发,所以就没有其他麻烦事了