Oracle培训(三十四)——JDBC第七章知识点总结——JDBC高级应用--DAO封装
Oracle培训(三十四)——JDBC第七章知识点总结——JDBC高级应用--DAO封装知识点预览
JDBC知识回顾
DAO封装
ThreadLocal
JDBC及DAO综合运用
1. JDBC
2. ODBC与JDBC
3. JDBC的四种驱动类型
JDBC-ODBC桥加ODBC驱动
本地API驱动
网络协议驱动
本地协议驱动
4. Connection,Statement,ResultSet
5. 事务,并发控制
6. 行集
7. 连接池
8. 对象关系映射
9. 应用程序架构
三层(多层):显示层,业务逻辑层,数据层
数据访问代码属于业务逻辑层
业务逻辑通过操作数据实现相关功能
1. DAO
Data Access Object—数据访问对象
访问数据库,操作数据的代码
建立数据库连接,操作数据库数据
2. DAO封装
将数据访问代码封装为一个组件,与业务逻辑代码隔开
使数据访问与业务逻辑分离,业务逻辑不需要关心数据操作
应用程序结构清晰,易于维护和扩展,方便的改变数据库及配置
是访问数据的相关技术的综合运用
JDBC,Connection,Statement ,ResultSet
事务,并发控制,连接池,行集,ThreadLocal
对象关系映射,多层架构
1. 问题
多线程访问数据时,每个线程在多个地方要用到连接,难以管理
每个线程打开多个连接对象,浪费资源
2. ThreadLocal
java.lang.ThreadLocal
为解决多线程程序的并发问题提供了一种新的思路
当使用ThreadLocal维护对象时,ThreadLocal为每个使用该对象的线程提供独立的对象副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。
使用ThreadLocal管理每个线程使用的连接对象
唯一性:ThreadLocal存储的对象与线程一对一绑定,线程之间不受干扰
持久性:只要没有删除,TreadLocal中存储的对象一直存在,线程可以随时访问
3. ThreadLocal使用
a) ThreadLocal
set(Object obj); //将相关对象存入ThreadLocal中
get(); //从ThreadLocal中取出与当前线程相关的对象
remove(); //从ThreadLocal中删除与当前线程相关的对象
b) 与线程相关
4. ThreadLocal示例
TestJDBC1.java
JDBC及DAO综合运用
1. 银行业务模拟系统需求说明
a) 银行业务模拟系统需求
模拟银行日常业务
开户、存款,取款,转账
b) DAO封装
将数据访问代码进行封装
与业务代码实现隔离
重点是DAO实现,模拟业务功能
2. 银行业务模拟系统
a) 显示层
BankTest.java
b) 业务逻辑层
BankBiz.java, BankBizImpl.java
BankAccount.java, BankStatement.java
BankAccountDao.java,BankAccountDaoImpl.java
ConnectionFactory.java, jdbc.properties
c) 数据层
MySQL
test数据库
bankaccount表,bankstatement表
d) 业务逻辑层
BankBiz.java, BankBizImpl.java
进行各种验证,实现开户,存款,取款,转账功能
BankBiz.java是接口,BankBizImpl.ava实现接口,便于扩展
BankAccount.java, BankStatement.java
实体Bean,封装相关表中的数据,在数据库及业务处理代码之间传递数据(集合)
e) BankAccountDao.java,BankAccountDaoImpl.java
操作bankaccount和bankstatement表中的数据
BankAccountDao.java是接口,BankAccountDaoImpl.java实现接口,便于扩展
f) ConnectionFactory.java, jdbc.properties
ConnectionFactory.java读取配置文件,创建连接池并从连接池获得连接
g) DAO相关代码
BankAccount.java, BankStatement.java
实体Bean,封装相关表中的数据,在数据库及业务处理代码之间传递数据(集合)
BankAccountDao.java,BankAccountDaoImpl.java
操作bankaccount和bankstatement表中的数据
BankAccountDao.java是接口,BankAccountDaoImpl.java实现接口,便于扩展
ConnectionFactory.java, jdbc.properties
ConnectionFactory.java读取配置文件,创建连接池并从连接池获得连接
h) 连接池,ThreadLocal,事务…
i) 业务完成过程
3. 银行业务模拟代码分析
a) 转账业务(BankTest.java)
g) 转账业务(运行结果)
开户,存款,取款,列出所有账户信息……
4. DAO总结
a) DAO
实体Bean:将数据库数据封装为对象,在业务逻辑代码、数据访问代码、显示层之间传递
dao:对数据库数据进行添加,修改,删除,查询操作
连接池:提高数据访问效率
b) 三层结构
业务逻辑层=业务处理代码+DAO
c) N层结构
显示层--》业务逻辑层--》数据访问层(DAO)--》数据库
d) DAO封装
将数据访问代码封装为一个组件,与业务逻辑代码隔开
使数据访问与业务逻辑分离
应用程序结构清晰,易于维护和扩展
e) 实现DAO
JDBC
事务,连接池……
ThreadLocal
三层/N层架构
事务(dao层)--》事务(业务层)