Javase-连接池(5)

连接池-课堂笔记

一、预编译对象

  1. SQL注入漏洞
  • 用户输入一些特殊的值,在拼接SQL字符串的时候,导致SQL的语法结构发生变化,从而绕过了SQL的条件。形成的安全问题,叫SQL注入漏洞。
  • 如何避免SQL注入漏洞:使用预编译对象PreparedStatement
  1. 什么是预编译对象
  • 预编译对象:java.sql.PreparedStatement,是Statement的子接口,功能更强;是另外一种SQL执行平台对象,能够解决SQL注入漏洞;
  1. 怎样使用预编译对象

//1.注册驱动
//2.获取连接

//3.创建SQL执行平台:预编译对象PreparedStatement
//3.1 改造SQL语句:使用?代替SQL里的参数值
//3.2 预编译SQL语句,得到预编译对象
//3.3 设置SQL语句里的参数值

//4.执行SQL语句
//5.处理结果
//6.释放资源

2.1 SQL语句的改造

  • SQL语句里,所有的参数值,都要使用?代替掉

2.2 预编译SQL,得到预编译对象

  • PreparedStatement pstmt = connection.prepareStatement(sql)

2.3 设置SQL的参数值

  • SQL里有几个?,就要设置几个值
  • 设置参数值的方法:pstmt.setXXX(参数序号, 参数值)

2.4 执行SQL语句

  • 执行DQL语句:pstmt.executeQuery()
  • 执行DML语句:pstmt.executeUpdate()
  • 执行任意语句:pstmt.execute()

注意:预编译对象执行SQL的所有方法,都是无参方法

  1. 预编译对象的原理和好处
  • 原理:见图
  • 好处:
    • 能够解决SQL注入漏洞
    • 效率高:SQL编译一次,执行多次
    • 可读性高:SQL语句结构清晰易读

二、自定义连接池

  • 目的:1. 通过自定义连接池,了解连接池的原理; 2. 代表自定义连接池,讲一个知识点:对某个对象的方法进行功能增强
  1. 什么是连接池
  • 连接池:存储了一批连接对象的容器。如果需要操作数据库,不用再创建Connection对象,而是从连接池里取出一个使用;使用完成之后,把连接对象归还到连接池。
  • 好处:
    • 性能高:拿出一个使用,比创建一个速度快
    • 连接对象循环使用,连接数就少了:
      • 不会导致数据库所有可用连接,都被占用
      • 不会Connection对象过多,导致内存溢出
  1. 自定义连接池

2.1 功能增强的方式

  • 继承父类,重写父类方法
  • 代理模式:调用代理对象,让代理对象调用目标对象。代理对象里可以写一些代码,进行功能增强(基于反射技术)
  • 装饰者模式:
  1. 装饰者模式

《设计模式之禅》<

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值