@chenbinghua
2018-08-13T02:05:27.000000Z
字数 916
阅读 1052
java
一、网络连接
程序和数据库分离,通过网络连接
二、面向接口编程
java官方提供JDBC接口,数据库厂商提供JDBC的实现,也叫JDBC驱动
一、抱怨
JDBC代码太多
贾琏欲执事
1:加载注册驱动
2:获取连接对象
3:获取预编译句对象
4:执行SQL语句
5:释放资源(close)
二、JDBCTemplate
封装JDBC
三、O/R Mapping
面向对象与关系型数据库的对应
java类名 数据库的表名
java类的属性 数据库的字段
java类的一个对象 数据库的一个记录
四、Hibernate和JPA
java官方招安Hibernate
一个新的Java规范诞生了, 专门用于处理Java 对象的持久化问题
一、数据库连接
数据库连接完后就释放资源,浪费
二、向Tomcat取经
线程池-----数据库连接池
三、数据库连接池
数据库连接池的实现方式
1.实现JDBC的Connection接口
2.动态代理Connection接口
事务的概念
1.原子性
2.一致性
3.隔离性
4.持久性
数据库的事务并发问题
多个事务并发去访问/修改同一个资源
解决办法 采用事务隔离
事务隔离级别
数据库村的旺财和小强(一)
7、请阐述乐观锁和悲观锁的原理和区别
锁存在原因:数据并发问题(丢失更新/脏读)
乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据
sql 上的体现:加版本/时间戳控制语句
update set version = version+1 ... from .... where version = xxx
悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁
sql 上的体现:加锁
select ... from ... for update
使用
在实际生产环境里边,如果并发量不大且不允许脏读,可以使用悲观锁解决并发问题;但如果系统的并发非常大的话,悲观锁定会带来非常大的性能问题,
所以我们就要选择乐观锁定的方法.