认识实习日记第三天

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

主要内容:学习数据库连接池与数据库封装知识

今天是认识实习的第三天。原本教我们的李老师离开了,带领我们学习的换成了Saxon老师。今天我们要学习的是有关数据库连接池以及数据库的封装知识。

首先,老师提到的是数据库连接池这个概念。数据库连接池是用来分配、管理和释放数据库连接的,它允许应用程序重复使用一个现有的数据库连接,不需要重新创建,释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏,这项技术明显提高了数据库操作的性能。

数据库连接池的必要性:数据库连接频繁的创建、断开会增大系统在性能上及响应时间上的开销。数据库连接池在系统初始化过程中创建一定数量的数据库连接放于连接池中,当程序需要访问数据库时,不需要建立新的连接,直接从连接池中取出一个已建立的空闲连接来使用,使用完毕后,程序将连接归还到连接池中,供其他请求使用,从而实现的资源的共享。连接的建立、断开都由连接池自身来管理,数据库连接资源得到重用,减少了数据库连接建立和释放的时间开销,提高了系统响应速度,统一的数据库连接管理,避免了连接资源的泄露。

常用的主流开源数据库连接池有Druid、C3P0、DBCP、Tomcat Jdbc Pool、BoneCP等。

其中,Saxon老师重点讲解了Druid和C3P0数据库连接池,Druid是Java语言中最好的数据库连接池,Druid能够提供强大的监控和扩展功能,是一个可用于大数据实时查询和分析的高容错、高性能的开源分布式系统,尤其是当发生代码部署、机器故障以及其他产品系统遇到宕机等情况时,Druid仍能够保持100%正常运行。主要特色:为分析监控设计;快速的交互式查询;高可用;可扩展;Druid是一个开源项目,源码托管在github上。

C3P0是一个开源的JDBC连接池,它实现了数据源与JNDI绑定,支持JDBC3规范和实现了JDBC2的标准扩展说明的Connection和Statement池的DataSources对象。特点是时间和内存资源消耗较小,没有内存泄漏的风险,应用程序直接获取链接。

接下来Saxon老师讲解了ThreadLocal,ThreadLocal叫做本地线程变量,意思是说,ThreadLocal中填充的的是当前线程的变量,该变量对其他线程而言是封闭且隔离的,它是Thread的局部变量,用于编多线程程序,对解决多线程程序的并发问题有一定的启示作用。使用这个工具类可以很简洁地编写出优美的多线程程序。

ThreadLocal用于保存某个线程共享变量,原因是在Java中,每一个线程中都有一个ThreadLocalMap<ThreadLocal object>,其key就是一个ThreadLocal,而Object即为该线程的共享变量。而这个map是通过ThreauLocal的set和get方法操作的。对于同一个static ThreadLocal,不同线程只能从中get,set,remove自己的变量,而不会影响其他线程的变量。

  1. ThreadLocal.get:获取ThreadLocal中当前线程共享变量的值。
  2. ThreadLocal.set:设置ThreadLocal中当前线程共享变量的值。
  3. ThreadLocal.remove:移除ThreadLocal中当前线程共享变量的值。
  4. ThreadLocal.initialValue: ThreadLocal没有被当前线程赋值时或当前线程刚调用remove方法后调用get方法,返回此方法值。

  接下来老师又为我们介绍了在BaseDao中通用的CRUD操作,如增删改的通用方法:

@param sql  SQL语句

@param args 可变参数

@return  受影响的行数

又对Apache—DBUtils进行了介绍:commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能。

DbUtils类:提供如关闭连接、装载JDBC驱动程序等常规工作的工具类,里面的所有方法都是静态的。

最后则介绍了DAO和增删改查通用方法,DAO: Data Access Object访问数据信息的类和接口,包括了对数据的CRUD(Create、Retrival, Update、Delete),而不包含任何业务相关的信息。作用:为了实现功能的模块化,更有利于代码的维护和升级。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值