实习日记第三天

2023 年 6 月 7 日           星期三           地点:软通极客人才学院

主要内容:学习JDBP的基本操作,数据库连接池的Apache—DBUtils概念以及DAO和增删改查通用方法。

        今天是企业认识实习的第三天,主要学习的是JDBP的相关知识以及自己上手敲打程序做到将理论应用于实践。

          上午的课程首先是JDBP的基本概述,在Java中,数据库存取技术可分为三类,第一类是JDBC直接访问数据库,第二类是第三方O/R工具,如Hibernate,、Mybatis等,第三类是JDBC是Java访问数据库的基石,Mybatis、 Hibernate等只是更好的封装了JDBC。那么究竟什么是JDBP呢,老师给我们做了一个总结:JDBC是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口,定义了用来访问数据库的标准Java类库,使用这个类库可以以一种标准的方法、方便地访问数据库资源。JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。JDBC API是一系列的接口,它统一和规范了应用程序与数据库的连接、执行SQL语句,并到得到返回结果等各类操作。声明在java.sql与javax.sql包中。了解了JDBP的基本定义,接下来老师带领我们学习JDBP的用途以及编写步骤。我们可以用JDBP进行查询信息操作以及增删改查CRUD,戚编写步骤大致可以分为四步,第一步注册驱动,第二步获取连接,第三步执行增删改查以及第四步释放资源。

        第二节课的时间基本上都在讲述JDBP的操作老师特别强调了加载驱动和注册驱动的区别,加载驱动,就是把驱动类加载到内存。注册驱动,就是把驱动类的对象交给DriverManager管理,用于后面创建连接等使用。调用Class类的静态方法forName,向其传递要加载的JDBC驱动的全类名。

    第三节课主要讲了数据库连接池历史背景和基本概念,普通的JDBC数据库连接使用DriverManager来获取,每次向数据库建立连接的时候都要将Connection 加载到内存中,再验证IP地址,用户名和密码。需要数据库连接的时候,就向数据库要求一个,执行完成后再断开连接。这样的方式将会消耗大量的资源和时间。数据库的连接资源并没有得到很好的重复利用若同时有几百人甚至几千人在线,频繁的进行数据库连接操作将占用很多的系统资源,严重的甚至会造成服务器的崩溃。对于每一次数据库连接,使用完后得断开。否则,如果程序出现异常而未能关闭,将会导致数据库系统中的内存泄漏,最终将导致重启数据库。这种开发不能控制被创建的连接对象数,系统资源会被毫无顾及的分配出去,如连接过多,也可能导致内存泄漏,服务器崩溃为解决传统开发中的数据库连接问题,可以采用数据库连接池技术。数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。其中ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。ThreadLocal用于保存某个线程共享变量,原因是在Java中,每一个线程中都有一个Thread Local MAP<Thread Local>,其key就是一个Thread Local,而Object即为该线程的共享变量。而这个map是通过ThreadLocal的set和get方法操作的。对于同一个static ThreadLocal,不同线程只能从中get,set,remove自己的变量,而不会影响其他线程的变量。后来老师介绍了一个c3p0的案例,让我们上机测试调用一下。过程中虽然遇到了一些小的问题,但是最终也都调试出来了。

      下午的课程学习主要是Apache—DBUtils以及DAO和增删改查通用方法。首先讲的是Apache—DBUtils,commons-dbutils是Apache组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能。老师后面依次介绍了DbUtils类、QueryRunner类、ResultSetHandler接口以及一个案例的代码编写。DbUtils是提供如关闭连接、装载JDBC驱动程序等常规工作的工具类,里面的所有方法都是静态的。Query Runner类封装了SQL的执行,是线程安全的。不仅可以实现增、删、改、查,还考虑了事务处理需要共用Connection。该类最主要的就是简单化了SQL查询,它与ResultSetHandler组合在一起使用可以完成大部分的数据库操作,能够大大减少编码量。

        下午的第二节课主要为我们讲了DAO和增删改查通用方法,DAO是Data Access Object访问数据信息的类和接口,包括了对数据的CRUD,而不包含任何业务相关的信息。作用是为了实现功能的模块化,更有利于代码的维护和升级。后面老师依次介绍了UserDAO接口、BaseDao基础CRUD实现类、UserDaoImpl实现类、UserDaoImplTest测试类,然后让我们上机测试,将理论应用于实践。

         第三天的实习结束了,今天的学习难度也比前两天的高,更多的是要求我们将所学知识应用于 实践,自己将一个案例在自己的电脑上运行。在这个过程中虽然面临着许多艰难,有Java语言应用错误,有连接不上数据池等一系列的问题,但是在自我检查和同学们的帮助下也最终完成了案例的测试,更加期待明天的实习啦!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值