版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、在Web组件中操作数据库,在本讲中您能了解如下知识点 连接数据库的各种方式 应用数据库连接池技术 应用DAO模式实现持久层 JDBC对数据库的事务支持 实现二进制字段的读写 应用批处理数据访问技术,1、在Web组件中连接数据库,(1)采用JDBC-ODBC桥方式连接数据库,在控制面板种配置出ODBC的数据源名称DSN在代码中加载JDK中所提供的JDBC-ODBC桥的驱动程序类,Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); Connection conDB = DriverManager.getConnection(jdbc:odbc:studlist
2、);,您知道其缺点吗?,在实际项目开发中不会使用该方式!,(2)采用数据库厂商提供的JDBC驱动程序方式直接连接数据库,获得该厂商所提供的JDBC驱动程序的*.jar包文件,并将驱动程序的*.jar包文件导入到Web系统的WEB-INF/lib目录中,您知道其缺点吗?,在代码中加载其驱动程序类和连接数据库,您知道其缺点吗?,(3)采用数据库连接池实现连接数据库,JDBC直接访问数据库中的数据,每一次数据访问请求都必须经历建立数据库连接、打开数据库、存取数据和关闭数据库连接等步骤,而连接并打开数据库是一件既消耗资源又费时的工作,如果频繁发生这种数据库操作,系统的性能必然会急剧下降,甚至会导致系统
3、崩溃。 数据库连接池技术是解决这个问题最常用的方法,其工作原理:,2、数据库连接池的主要操作过程 (1)建立数据库连接池对象(服务器启动) (2)按照事先指定的参数创建初始数量的数据库连接(即:空闲连接数) (3)对于一个数据库访问请求,直接从连接池中得到一个连接 (4)存取数据库中的数据 (5)将连接重新放入连接池中 (6)释放数据库连接池对象(服务器停止、维护期间,释放数据库连接池对象,并释放所有连接)。,思考 如果连接池空闲连接都拿完了,怎么办? 连接池没有空闲连接时,连接池会不断产生连接吗? 所有的活跃连接一直不归还连接池,连接池也不再产生新的连接,该怎么办? 什么时候触发回收机制?
4、什么样的连接是无效连接?,(3)应用DBCP的代码示例,(2)所需要的系统包文件 commons-collections.jar,3、应用Apache DBCP组件 (1)DBCP是一个依靠Jakarta commons-pool对象池机制的,、commons-dbcp-1.2.2.jar和 commons-pool-1.2.jar,数据库连接池.DBCP可以直接的在应用程序用使用,DBCP既可以编程也可以配置方式被应用,4、对DBCP有关的各个配置参数的说明 (1)连接池创建时产生的初始化连接数,默认为0 initialSize=10 (2)连接池在同一时间内分配的最大使用连接数量,设负数为
5、没有限制 maxActive=50 (3)最大空闲连接,没有多余的连接被释放或负数时为没有限制 maxIdle=20 (4)最小空闲连接,没有多余的连接被创建或0为不创建 minIdle=5 (5)最大等待毫秒数,没有可用连接时,超过此时间会产生出错误信息 maxWait=1000,(6)是否回收无效连接, 默认是 false removeAbandoned=true (7)几秒后回收无效连接, removeAbandoned 必须为 true removeAbandonedTimeout=180 (8)是否在自动回收超时连接的时候打印连接的超时错误, 默认为 false logAbandon
6、ed=true,(9)取得连接是否进行有效性验证,默认为false,如果验证失败,会删除此连接转而连接其他的连接 testOnBorrow=true (10)对空闲的连接空闲是否进行有效性验证,如果验证失败,会删除此连接 testWhileIdle=true (11)返回连接时是否进行有效性验证 testOnReturn=true,5、常用的SQL语句的语法,(1)SQL数据定义功能(DDL) 主要完成定义数据库的结构,包括数据库本身、数据表、目录、视图等数据库元素。 (2)SQL数据操纵功能(DML) 主要完成在数据库中检索、修改、添加、删除等方面的任务,希望重点掌握这些功能的SQL语句及语
7、法,(3)SQL数据控制语言(DCL) 主要完成管理数据库中数据的存储权限的任务,(1)基本的思路(持久化) (2)表的个数:业务实体(某一类型的数据)-表,6、数据库表的逻辑设计,(3)优化表的个数:合并和分离,7、设计每一张数据库表的结构 (1)基本的思路 依据业务实体中的所包含各个属性及每一个属性所对应的物理量的类型。,满足数据库设计的范式 (2)设计各个表中的字段和类型,8、决定各个表之间的关系 (1)关系类型:一对一、一对多、多对一、多对多 (2)在表中体现上面的关系:主/外键,用户信息UserInfo和BBS信息BBSInf之间的“一对多”的关联关系,9、数据访问层中的组件类 (1
8、)数据连接类:实现连接数据库 (2)DAO组件类:实现CRUD功能 (3)持久类(PO):,您了解DAO模式吗?,10、面向接口编程实现 (1)为什么要如此? 什么是接口? 应用它的目的(作用)?-规范实现的要求 (2)应用面向接口编程实现给系统带来的优点 层与层之间采用接口实现关联 达到层与层之间相互分离,11、如何设计DAO类 (1)分别为不同的数据库表中的CRUD提供对应的DAO组件类,(2)示例程序,12、JDBC对数据库的事务操作,(1)JDBC中的事务特点 在JDBC中,打开一个连接对象Connection时,缺省是auto-commit模式,也就是说,一条对数据库的更新表达式代表
9、一项事务操作 操作成功后,系统将自动调用commit()来提交,否则将调用rollback()来回滚。,(2)禁止自动提交 在jdbc中,可以通过调用setAutoCommit(false)来禁止自动提交。 之后就可以把多个数据库操作的表达式作为一个事务, 在操作完成后调用commit()来进行整体提交,倘若其中一个表达式操作失败,都不会执行到commit(),并且将产生响应的异常; 此时就可以在异常捕获时调用rollback()进行回滚。,您了解在Java平台下有几种事务处理的技术吗?,(3)示例代码,(4)事务编程实例,(5)问题:事务控制是在DAO中还是在业务组件中实施?,13、二进制字
10、段的读写,(1)二进制字段 是指任何二进制类型的文件,可以保存在数据库的字段中,如图像文件或者Word文档文件等。,(2)对二进制字段,在Access数据库中一般设计为OLE对象,而在SQLServer中则设计为image类型,在Oracle 中呢?在MySQL中呢?,(3)实现的示例:下面为某个Web系统中的用户注册功能的实现示例,并实现保存用户提交的图像文件。,数据库表的结构请参考前面的数据库表(userImage字段),14、从数据库中读取并生成图片的Servlet,(2)代码示例,(1)实现的基本思路 设置Http响应输出的数据格式为“image/gif” 创建ServletOutputStream对象out,以用于以字节流的方式输出图像(如果本地输出则为FileOutputStream流) 查询数据库并用getBinaryStream方法返回InputStream对象in 创建byte数组用作缓冲,将in读入buf,再由out输出,15、用批处理提高数据访问效率,(2)与批处理功能有关的两个方法-addBatc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教学楼架空层景观设计
- 设计成果汇报动态展示方案
- 科普气味重塑大脑
- 牙周炎常见症状解析
- 美式乡村室内设计方案
- 老年性痴呆综合护理要点
- 连锁药店陈列设计
- 城镇污水处理厂设计
- 热流道注塑模浇注系统设计
- 宠物训狗课程设计
- 遗产补偿协议书范本
- 2025统编版(2024)小学道德与法治一年级下册《第13课-快乐儿童节》教学设计
- 人力制动机制动RAILWAY课件
- 恶性心律失常的急诊处理
- 预应力锚索基本试验方案
- 2023年高考英语真题全国乙卷及参考答案
- 中医护理方案培训
- DLT802.7-2023电力电缆导管技术条件第7部分非开挖用塑料电缆导管
- 《消化系统疾病预防课件》
- 中考英语表格类阅读理解专题
- 城市一卡通系统总体方案
评论
0/150
提交评论