数据库连接池---------------也优化了代码
数据库连接池---------------也优化了代码
一、编写数据库连接池
·实现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中的数据映射到实体对象中。
数据库连接池---------------也优化了代码相关推荐
- java银行管理系统(MySql+JDBC+数据库(Druid数据库连接池)+GUI)重要代码有解析注释
java银行管理系统 小白又来水博客了 文章目录 java银行管理系统 一.项目需求与分析: 二.知识及有关技术的概述: 三.银行管理系统需求的具体实现: 四.部分功能预览: 五.Last: 一.项目 ...
- java连接mysql数据库连接池_java使用原生MySQL实现数据的增删改查以及数据库连接池技术...
一.工具类及配置文件准备工作 1.1 引入jar包 使用原生MySQL,只需要用到MySQL连接的jar包,maven引用方式如下: mysql mysql-connector-java 5.1.48 ...
- C3P0(数据库连接池)详解
一.定义 C3P0是一个开源的JDBC连接池,它实现了数据源与JNDI绑定,支持JDBC3规范和实现了JDBC2的标准扩展说明的Connection和Statement池的DataSources对象. ...
- c3p0 数据库连接池
C3P0连接池 c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展.c3p0一般是与Hibernate,Spring等框架一块使用的,当然也可以 ...
- 数据库 -- 由数据库连接池引出的三种设计模式
笔记摘要: 这里首先对数据库连接池的优化进行了说明,同时自己编写了一个数据库连接池,在实际开发中,为了获取标准的数据源,我们需要去实现javax.sal.DataSource接口, 在实现过程中对于链 ...
- Alibaba Druid 源码阅读(三) 数据库连接池初始化探索
Alibaba Druid 源码阅读(三) 数据库连接池初始化探索 简介 上文中探索了Alibaba Druid的连接池初始化和获取连接的关键代码,接下来详细看看初始化部分 数据库连接池初始化 对整个 ...
- Java数据库连接池
前两天学习了数据库连接池的操作,防止以后忘记,总结一下. 首先介绍一下Tomcat安装目录下的一个文件夹,叫docs 就是上图所示的文件夹,然后文件夹里面有许许多多的HTML文件,点击index.ht ...
- Druid(德鲁伊)数据库连接池
文章目录 前言 一.Druid(德鲁伊)数据库连接池 1.1.Druid的介绍 1.1.Druid使用 总结 前言 **我们为什么要使用数据库连接池了?是为解决传统开发中的数据库连接问题,所以采用 ...
- 数据库连接池JNDI
数据库的连接和关闭是非常消耗系统资源的,在多层结构的应用环境中,这种资源消耗又直接的反映到系统性能上来.在项目实际应用中,最常用的解决方案便是建立数据库连接池. 一.数据库连接池基本原理 当程序启 ...
最新文章
- Javascript动画效果(四)
- linux环境变量堆栈,情景linux--如何摆脱深路径的频繁切换烦恼?
- 计算机中丢失boost,boost_system.dll
- Qt中的QPrintDialog
- 多而杂不会成为重点-丰收节贸易会:未来农业的发展方向
- 子线程适当Sleep的重要性
- 2018年,该转行AI工程师吗?
- 设计灵感|想让海报设计更丰富?可以试试重复
- Java 用反射设置对象的属性值
- ROS学习记录:创建一个工作空间和功能包,完成话题与服务编程
- 二分图最大匹配(匈牙利算法) URAL 1721 Two Sides of the Same Coin
- 怎样在微信、手机中浏览查看3D模型
- CSDN-JayChou测试
- 计算机显示在屏幕上怎么取消,电脑显示屏显示的九宫格怎样取消掉
- 扬子苦荞啤酒 一杯苦荞啤酒,精彩你的世界
- Python + Tkinter:图片浏览器(二)
- python跨年表白神器--你值得拥有!
- 金山文档手机app服务器异常,手机为什么打不开金山文档 打不开金山文档怎么办...
- 阿里巴巴矢量图库批量下载的方法
- 理科男用这种方式泡妞,真的能迎娶白富美吗?!