JDBC连接池(上)

1.1概念

  JDBC连接池其实就是一个容器(集合),存放数据库连接的容器。当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。

1.2数据库连接池的好处

  1. 节约资源(不是关闭连接而是归还)
  2. 用户访问高效(直接获取连接对象,不用创建)

1.3实现:

  标准接口:DataSource javax.sql包下的。方法:

  • 获取连接:getConnection()
  • 归还连接:Connection.close()。

  如果连接对象Connection是从连接池中获取的,那么调用Connection.close()方法,则不会再关闭连接了。而是归还连接。

1.4实践

   这篇文章我想从面向过程逐渐过渡到面向对象,通过代码一点一点的改变,感受一下从执行者变成指挥者的感觉。文章有点粗糙,如果你能手动敲完这几个版本,那么你的收获会很大!

JDBC的操作步骤:

  1. 加载数据库驱动程序
  2. 连接数据库
  3. 操作数据库
  4. 关闭数据库

第一个版本

  从第一个版本到第三个版本都需要使用到mysql-connector-java-5.1.45-bin.jar这个jar包,步骤是**创建跟src同级目录lib,导入上述jar包,并添加到构建路径。

  这里介绍1.0版本,首先是util配置层,注意一点!!!第10行的驱动路径,就是mysql.jdbc包下的Driver类,不是随便写的!配置过程是:

  • 1定义连接数据库所需的数据值
  • 2.加载驱动类
  • 3.获取数据库连接对象。

  这个过程中规中矩没有什么坑点。需要特别注意的是中间需要导包,导入的是Connection.sql下的包,导入其他的包就会报错,让你强转类型。

  接下来是dao层的接口,这里接口定义了增删改查四个方法。

  接下来是dao层中的实现类,它是实现了接口并对方法重写,大家认真看实现类图中的红色框框,发现这里的sql语句写死了,就是说我现在一个方法只能执行一条特定的sql语句,这代码显然不可用。而且此时查询方法查出来的数据是单一的,他们不是一个学生对象。这就是1.0版本。下面的2.0版本会对学生对象进行封装。

工具类
img

第10行的驱动路径,就是mysql.jdbc包下的Driver类,不是随便写的!

用于增删改查的接口

img

上面接口的实现类

img

img

第二个版本

  这个版本解决了sql命令固定的问题,执行的命令和条件是由自己输入。这里的?是占位符号,占位符后面会替换。还封装了学生对象,查询时输出的就是一个个学生对象。可能大家觉得这很nice了。但是2.0版本还是可以优化的,大家可以看一下几个方法重复的打码挺多的,例如ResultSet,Statement,Connection对象的关闭,这些close方法可以封装优化。还有获取connection(数据库连接对象),获取执行sql命令的statement,执行命令是否也是一样呢。这些重复的代码可以考虑封装,第三个版本就是这么做的。

接口

img

学生类(JavaBean)

img

这里bean层的学生类就截图成员变量,下面的构造方法,get,set方法,toString方法自己脑补哈哈哈。

接口实现类

img

img
img
  文章篇幅有点长,分成两篇了,大家可以看看JDBC连接池(下)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jayden 

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值