数据库连接池---------------也优化了代码

一、编写数据库连接池

·实现javax.sql.DataSource接口,有getConnection()和getConnection(String username,String password)

·实现DataSource接口。并实现连接池功能的步骤:

1、在DataSource构造函数中批量创建与数据库的连接,并把创建的连接加入LinkedLIist对象中

2、实现getConnection方法,让getConnection方法每次调用时,从LinkedList中区一个Connection返回给用户

3、当用户使用完Connection,调用Connection close()方法时,从LinkedList中Connection对象应保证将自己返回到LinkedList中,而不要把conn还给数据库

注意:linkedlist是链表式的能保证数据库连接池在用完之后返回到linedlist中

而arraylist是线性的不能由以上功能

二、开源数据库连接池

现在很多web服务器都实现了DataSource的实现,及数据库的实现。

也有一些开源组织提供了数据源的独立实现:

·DBCP数据库连接池

·c3p0数据库连接池

实际应用时不需要编写连接数据路代码,直接从数据源获得数据路的连接。程序员编程时也应该尽量使用这些数据源的实现,以提升程序的数据库访问性能。

三、DBCP数据源

1、 赋值jar包以及jdbc.properties文件

2、 修改配置文件

3、 修改DBManager文件

4、 该数据库连接池既可以与应用服务器整合使用,也可有应用程序独立使用

四、jdbc与  c3p0的区别

jdbc没有自动回收空闲连接的功能,c3p0有回收空闲连接的功能

五、配置Tomcat数据源

1、 设置配置文件

方法一:这种方法并不好

在tomcat服务器的server.xml文件中国的host中加入<context>…..</context>

方法二:常用

在web工程中添加context.txt

<Context>

<Resource name="jdbc/jdbc"

auth="Container"

type="javax.sql.DataSource"

driverClassName="com.mysql.jdbc.Driver"

url="jdbc:mysql://localhost:3306/jdbc"

username="root"

password="123"

maxActive="50"

maxIdle="10"/>

</Context>

六、jdni技术

·即java命名和目录接口,对应于j2se中的javax.naning包

·这套api的主要作用在于:他可以把java对象放在一个容器中(jdni容器),并为容器中的对象起一个名子,以后程序想获得java对象,只需要通过名称检索即可。

·其核心api为Context,它代表JNDI容器,其lookup方法为检索容器中对应名称的对象。

以下是编写jdbc框架--------------------优化代码

七、元数据—DataBaseMetaData

·元数据:数据库、表、列的定义信息

·Connection.getDatabaseMetaData对象

•    getURL():返回一个String类对象,代表数据库的URL。

•    getUserName():返回连接当前数据库管理系统的用户名。

•    getDatabaseProductName():返回数据库的产品名称。

•    getDatabaseProductVersion():返回数据库的版本号。

•    getDriverName():返回驱动驱动程序的名称。

•    getDriverVersion():返回驱动程序的版本号。

•    isReadOnly():返回一个boolean值,指示数据库是否只允许读操作。

八、元数据—PrarameterMetaData

PreparedStatement . getParameterMetaData()

获得代表PreparedStatement元数据的ParameterMetaData对象。

Select * from user where name=? And password=?

ParameterMetaData对象

getParameterCount()

获得指定参数的个数

getParameterType(int param)

获得指定参数的sql类型

九、元数据—ResultSetMetaData

·ResultSet. getMetaData()

获得代表ResultSet对象元数据的ResultSetMetaData对象。

·ResultSetMetaData对象

getColumnCount()

返回resultset对象的列数

getColumnName(int column)

获得指定列的名称

getColumnTypeName(int column)

获得指定列的类型

十、使用元数据简化JDBC代码

·业务背景:系统中所有实体对象都涉及到基本的CRUD操作:

a)        所有实体的CUD操作代码基本相同,仅仅发送给数据库的SQL语句不同而已,因此可以把CUD操作的所有相同代码抽取到工具类的一个update方法中,并定义参数接收变化的SQL语句。

b)       实体的R操作,除SQL语句不同之外,根据操作的实体不同,对ResultSet的映射也各不相同,因此可义一个query方法,除以参数形式接收变化的SQL语句外,可以使用策略模式由qurey方法的调用者决定如何把ResultSet中的数据映射到实体对象中。

数据库连接池---------------也优化了代码相关推荐

  1. java银行管理系统(MySql+JDBC+数据库(Druid数据库连接池)+GUI)重要代码有解析注释

    java银行管理系统 小白又来水博客了 文章目录 java银行管理系统 一.项目需求与分析: 二.知识及有关技术的概述: 三.银行管理系统需求的具体实现: 四.部分功能预览: 五.Last: 一.项目 ...

  2. java连接mysql数据库连接池_java使用原生MySQL实现数据的增删改查以及数据库连接池技术...

    一.工具类及配置文件准备工作 1.1 引入jar包 使用原生MySQL,只需要用到MySQL连接的jar包,maven引用方式如下: mysql mysql-connector-java 5.1.48 ...

  3. C3P0(数据库连接池)详解

    一.定义 C3P0是一个开源的JDBC连接池,它实现了数据源与JNDI绑定,支持JDBC3规范和实现了JDBC2的标准扩展说明的Connection和Statement池的DataSources对象. ...

  4. c3p0 数据库连接池

    C3P0连接池 c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展.c3p0一般是与Hibernate,Spring等框架一块使用的,当然也可以 ...

  5. 数据库 -- 由数据库连接池引出的三种设计模式

    笔记摘要: 这里首先对数据库连接池的优化进行了说明,同时自己编写了一个数据库连接池,在实际开发中,为了获取标准的数据源,我们需要去实现javax.sal.DataSource接口, 在实现过程中对于链 ...

  6. Alibaba Druid 源码阅读(三) 数据库连接池初始化探索

    Alibaba Druid 源码阅读(三) 数据库连接池初始化探索 简介 上文中探索了Alibaba Druid的连接池初始化和获取连接的关键代码,接下来详细看看初始化部分 数据库连接池初始化 对整个 ...

  7. Java数据库连接池

    前两天学习了数据库连接池的操作,防止以后忘记,总结一下. 首先介绍一下Tomcat安装目录下的一个文件夹,叫docs 就是上图所示的文件夹,然后文件夹里面有许许多多的HTML文件,点击index.ht ...

  8. Druid(德鲁伊)数据库连接池

    文章目录 前言 一.Druid(德鲁伊)数据库连接池 1.1.Druid的介绍 1.1.Druid使用 总结 前言   **我们为什么要使用数据库连接池了?是为解决传统开发中的数据库连接问题,所以采用 ...

  9. 数据库连接池JNDI

    数据库的连接和关闭是非常消耗系统资源的,在多层结构的应用环境中,这种资源消耗又直接的反映到系统性能上来.在项目实际应用中,最常用的解决方案便是建立数据库连接池. 一.数据库连接池基本原理 当程序启 ...

最新文章

  1. Javascript动画效果(四)
  2. linux环境变量堆栈,情景linux--如何摆脱深路径的频繁切换烦恼?
  3. 计算机中丢失boost,boost_system.dll
  4. Qt中的QPrintDialog
  5. 多而杂不会成为重点-丰收节贸易会:未来农业的发展方向
  6. 子线程适当Sleep的重要性
  7. 2018年,该转行AI工程师吗?
  8. 设计灵感|想让海报设计更丰富?可以试试重复
  9. Java 用反射设置对象的属性值
  10. ROS学习记录:创建一个工作空间和功能包,完成话题与服务编程
  11. 二分图最大匹配(匈牙利算法) URAL 1721 Two Sides of the Same Coin
  12. 怎样在微信、手机中浏览查看3D模型
  13. CSDN-JayChou测试
  14. 计算机显示在屏幕上怎么取消,电脑显示屏显示的九宫格怎样取消掉
  15. 扬子苦荞啤酒 一杯苦荞啤酒,精彩你的世界
  16. Python + Tkinter:图片浏览器(二)
  17. python跨年表白神器--你值得拥有!
  18. 金山文档手机app服务器异常,手机为什么打不开金山文档 打不开金山文档怎么办...
  19. 阿里巴巴矢量图库批量下载的方法
  20. 理科男用这种方式泡妞,真的能迎娶白富美吗?!

热门文章

  1. 最美女司机!90后女生穿汉服开公交
  2. 服务器无限火力时间,《英雄联盟》无限火力2019时间表 无限火力什么时候开
  3. 夜曲(歌手:周杰伦 专辑:十一月的萧邦 )
  4. java计算机毕业设计美容中心在线后台管理系统源码+系统+mysql数据库+lw文档
  5. 如何提取出一首歌曲的梅尔频谱
  6. opencc-python使用
  7. vue2中components是干嘛用的
  8. 13篇基于Anchor free的目标检测方法
  9. 【多元统计分析】04.多元正态分布的参数估计
  10. nus计算机科学技术专业,新加坡国立大学计算机硕士专业介绍