JDBC数据库连接javaEE

上传人:二*** 文档编号:243071876 上传时间:2024-09-15 格式:PPT 页数:72 大小:2.26MB
返回 下载 相关 举报
JDBC数据库连接javaEE_第1页
第1页 / 共72页
JDBC数据库连接javaEE_第2页
第2页 / 共72页
JDBC数据库连接javaEE_第3页
第3页 / 共72页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,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,代码分析:,U,rl,、,U,ser,、,P,assword,直接在代码中定义,如果数据库服务器稍作变动,怎么办?,一,个项目基本针对一个底层数据库,难道每次操作数据库,都要注册一次驱动程序嘛?是否可以只注册一次?,获取数据库连接时,每次都需要,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,)等原子操作,。,业务,逻辑层:此层由系列的业务对象组成,这些业务逻辑对象实现了系统所需要的业务逻辑方法,。这些,业务逻辑方法可能仅仅用于暴露,DomainObject,对象所实现的业务逻辑方法,也可能是,依赖,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,实现(四):,DaoImpl,(二),65,DAO,设计模式,DAO,实现(四):,DaoImpl,(三),66,DAO,设计模式,DAO,实现(四):,DaoImpl,(四),67,DAO,设计模式,DAO,实现(四):,DaoImpl,(五),68,DAO,设计模式,DAO,实现(四):,DaoImpl,(六),69,DAO,设计模式,DAO,实现(五):,Main,验证(一),70,DAO,设计模式,DAO,实现(五):,Main,验证(二),71,答疑,Q & A,72,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!