JDBC数据库连接javaEE.ppt_第1页
JDBC数据库连接javaEE.ppt_第2页
JDBC数据库连接javaEE.ppt_第3页
JDBC数据库连接javaEE.ppt_第4页
JDBC数据库连接javaEE.ppt_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JDBC,1,JDBC基础,2,JDBC基础,JDBC的全称是 Java Database Connectivity,即Java数据库连接,它是一种可以执行SQL语句的Java API。 Java API是接口,其实现类由各数据库厂商提供实现,这些实现类就是“驱动程序”。 正是通过JDBC驱动的转换,才使得使用相同JDBC API编写的程序,可以在不同的数据库系统上运行良好。,3,JDBC基础,JDBC编程步骤(一):,4,驱动类对应的字符串: MySql:com.mysql.jdbc.Driver SQLServer:com.microsoft.sqlserver.jdbc.SQLServerDriver 数据库URL: MySql:jdbc:mysql:/127.0.0.1:3306/sms SQLServer:jdbc:sqlserver:/127.0.0.1:1433;DatabaseName=sms,JDBC基础,JDBC编程步骤(二):,5,注意:以上整个示例代码,应该使用try catch finally释放资源,JDBC基础,JDBC_增删改操作:,6,JDBC基础,JDBC_前几页PPT代码分析: Url、User、Password直接在代码中定义,如果数据库服务器稍作变动,怎么办? 一个项目基本针对一个底层数据库,难道每次操作数据库,都要注册一次驱动程序嘛?是否可以只注册一次? 获取数据库连接时,每次都需要Url、User、Password,一旦改动其中一个数据,意味着要修改所有此处的代码。 释放资源,每次数据库操作后,都需要释放资源,难道每次操作后都要写三次try close catch代码嘛?,7,JDBC基础,JDBC_封装升级(一):,8,JDBC基础,JDBC_封装升级(二):,9,JDBC基础,JDBC_封装升级(三):,10,JDBC基础,JDBC_封装升级(四):,11,JDBC基础,Statement的缺点: 同样的SQL语句,每次都要发送,不能进行有效的缓存。 拼接SQL字符串非常容易出现错误。 不能防止恶意数据,易产生SQL注入。 升级后的新接口PreparedStatement(推荐): 预编译SQL语句,并进行有效的缓存,性能更好。 允许使用问号占位符参数,并且该参数必须获得值后才可以执行。 无需拼接SQL语句。,12,SQL注入:“.where name=” + “or 1=1 or” + “and password=”+ “”+ “”,问号占位符参数:INSERT INTO User(id,name,age,birthday) VALUES(?,?,?,?);,JDBC基础,JDBC_ PreparedStatement(一):,13,JDBC基础,JDBC_ PreparedStatement(二):,14,JDBC基础,JDBC_疑难杂症: 获取插入记录后的自增长值 日期类型(datetime) 文本信息(text):varchar的最大长度为65535左右 二进制文件(blob),15,JDBC基础,JDBC_疑难杂症(一):自增长值、日期(写入),16,JDBC基础,JDBC_疑难杂症(一):自增长值、日期(读取),17,JDBC基础,JDBC_疑难杂症(二):文本信息text(写入),18,JDBC基础,JDBC_疑难杂症(二):文本信息text(读取),19,JDBC基础,JDBC_疑难杂症(三):二进制文件(写入),20,JDBC基础,JDBC_疑难杂症(三):二进制文件(读取),21,JDBC基础,JDBC_事务处理: 事务处理就是当执行多个SQL指令时,如果因为某个原因使其中一条指令执行有错误,则取消先前执行过的所有指令。它的作用是保证各项操作的一致性和完整性。 JDBC事务是通过Connection对象进行控制的。其提供了两种事务: 自动提交模式:系统默认,每项数据库操作成功后,系统会自动提交。 手工提交模式:首先必须取消自动提交模式,然后通过commit()和rollback()提交和回滚事务。,22,JDBC基础,JDBC_事务处理:,23,JDBC基础,JDBC提供:DatabaseMetaData封装数据库相关信息,24,JDBC基础,JDBC提供:ResultSetMetaData封装结果集相关信息,25,连接池,26,连接池,JDBC数据库连接的建立及关闭是极耗系统资源的操作。之前获得的数据库连接,一个数据库连接对象均为一个物理数据库连接,每次操作都打开一个物理连接,使用完后立即关闭连接。频繁地打开、关闭连接将造成系统性能低下。 数据库连接池的解决方案是:当应用程序启动时,系统主动建立足够的数据库连接,并将这些连接组成一个连接池。每次应用程序请求数据库连接时,无须重新打开连接,而是从池中取出已有的连接使用,使用完后,不再关闭数据库连接,而是直接将连接归还给连接池。,27,连接池,数据库连接池 基本工作原理:,28,连接池,自定义数据库连接池(一):,29,连接池,自定义数据库连接池(二):,30,连接池,自定义数据库连接池(三):,31,连接池,自定义数据库连接池(四):,32,连接池,自定义数据库连接池(五):,33,连接池,非连接池与连接池对比(一):,34,连接池,非连接池与连接池对比(二):,35,连接池,开源的数据源(DBCP)(一):,36,连接池,开源的数据源(DBCP)(二):,37,连接池,开源的数据源(C3P0)(一):,38,连接池,开源的数据源( C3P0 )(二):,39,JDBC常见操作(重点),40,JDBC常见操作,基于数据库的信息系统,每张数据表基本都包含如下操作(函数): 新增记录、修改记录、删除记录 根据主键获取单个记录 根据记录数 获取所有记录 获取分页记录 PS:以上仅为基本操作,实际中还需包含其它复杂操作。 以上操作中,数据的传入传出都以对象形式,所有每张数据表对应一个实体类(列名对应属性名),41,JDBC常见操作,后续以选课系统sms数据库中的class数据表作为操作范例:,42,PS:数据表的列与实体类的属性一一对应,JDBC常见操作,纯JDBC操作(一):,43,JDBC常见操作,纯JDBC操作(二):,44,JDBC常见操作,纯JDBC操作(三):,45,JDBC常见操作,纯JDBC操作(四):,46,JDBC常见操作,纯JDBC操作(五):,47,JDBC常见操作,纯JDBC操作(六):,48,JDBC常见操作,纯JDBC操作(七):,49,JDBC常见操作,纯JDBC操作(八):,50,JDBC常见操作,以上全部操作中,太多的代码重复,如下: 每次都要获取Connection 每次都要创建PreparedStatement 每次都要设置参数值 每次都要执行Query或Update操作 每次都要关闭数据库连接 因此可以进行代码封装重构,所以市面出现了众多封装后的JDBC操作工具类,此PPT中使用 Apache DBUtils 注意:对于Apache DBUtils,要求JavaBean(实体类)的属性名必须与结果集中的列名一一对应!,51,JDBC常见操作,Apache DBUtils操作(一):,52,JDBC常见操作,Apache DBUtils操作(二):,53,JDBC常见操作,Apache DBUtils操作(三):,54,JDBC常见操作,Apache DBUtils操作(四):,55,JDBC常见操作,Apache DBUtils操作(五):,56,JDBC常见操作,Apache DBUtils操作(六):,57,DAO设计模式,58,DAO设计模式,Java EE架构大致分为如下几层: Domain Object(领域对象)层:此层由系列的POJO(Plain Old Java Object,普通的、传统的Java对象)组成,这些对象是该系统的Domain Object,往往包含了各自所需要实现的业务逻辑方法。 DAO(Data Access Object,数据访问对象)层:此层由系列的DAO组件组成,这些DAO实现了对数据库的创建、查询、更新和删除(CRUD)等原子操作。 业务逻辑层:此层由系列的业务对象组成,这些业务逻辑对象实现了系统所需要的业务逻辑方法。这些业务逻辑方法可能仅仅用于暴露Domain Object对象所实现的业务逻辑方法,也可能是依赖DAO组件实现的业务逻辑方法。 控制器层:此层由系列控制器组成,这些控制器用于拦截用户请求,并调用业务逻辑组件的业务逻辑方法,处理用户请求,并根据处理结果转发到不同的表现层组件。 表现层:此层由系列的JSP页面、Velocity页面、PDF文档视图组件组成。此层负责收集用户请求,并将显示处理结果。,59,DAO设计模式,大致上,Java EE 应用的架构如图所示:,60,Model:对应数据库表的实体类(属性与表中字段对应),XxDao:接口,定义对XX表的“增删改查”方法名 XxDaoImpl:对应接口的实现类,针对JDBC或Hibernate等的实现,XxService:接口,实现业务逻辑,定义实现系统功能的方法名 XxServiceImpl:对应接口的实现类,调用Dao中的方法,外加某些业务逻辑判断,DAO设计模式,DAO实现(一):Model,61,DAO设计模式,DAO实现(二):Dao,62,DAO设计模式,DAO实现(三):JdbcUtil,63,DAO设计模式,DAO实现(四):DaoImpl(一),64,DAO设计模式,DAO实现(四):

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论