java 连接池_Java连接数据库技术的性能分析

Java连接数据库技术的性能分析

一、 概述:

本文主要以Java连接数据库的框架和连接池的技术为主线逐步展开说明,用比对特点和案例相结合的方式分析各种技术的优劣。同时以项目开发为出发点对于各种技术的配置和代码实现进行说明,让读者感受到项目开发的魅力。

将相关格式的文件内容文本化的过程。另外针对于Excel文件内容的结构化和对象化进行实际案例分析,给出更适应Spring框架配置的解决方案。

二、 Hibernate和MyBatis的特点比对:

2de902ec3c8c80a991a2c37de229fa31.png

特点比对

三、 数据连接池技术:

1、 常见的连接池技术:

a) DBCP;

b) Druid;

c) C3P0;

d) Tomcat-JDBC;

2、 功能对比:

bcf65f0f348dc320c0bf51362078452b.png

功能对比

3、 测试结论:

a) 性能方面:

druid>tomcat-jdbc>dbcp>c3p0;

b) 功能方面:

druid功能最为全面,sql拦截等功能,统计数据较为全面,具有良好的扩展性;

c) 综合性能和扩展性等方面:

可考虑使用druid;

d) 缓存方面:

可开启prepareStatement缓存,对性能会有大概20%的提升;

e) 实际情况方面:

实际项目druid更常用,但也有使用dbcp的情况;

四、 商业中间件连接池:

1、 WebLogic的连接池:

此连接池的持续运行稳定性很强,在大并发量的压力下性能也相当优秀,另外在一些异常情况下连接池里的连接也能够及时释放。连接池监控一目了然,及时到位;

2、 WebSphere的连接池:

此连接池的持续运行稳定性相当强,在大并发量的压力下性能也足够优秀,另外在一些异常情况下连接池里的连接能够及时释放,连接池监控配置有些复杂,但是配置好后各项指标一目了然并且有图形显示。简单地说就是功能强大,使用复杂;

五、 项目中的具体细节处理:

1、 获得数据库连接属性:

a) 通过文件进行配置:

i. 必须与Java代码分离,保证工程人员可自行修改;

ii. 应尽量避免修改相关配置文件后需经重启服务器才能生效的情况;

b) 通过中间件服务器进行配置:

应尽量降低工程人员配置难度,并提供说明文档或使用手册;

2、 获得数据库连接实例:

a) 应尽量使用框架配置的方式;

b) 如需自行开发,应尽量使用工厂模式或单例模式,以保障实例不会被重复创建;

3、 封装和执行SQL语句:

i. 应提供多种方式的执行方法,比如批处理、存储过程与函数等等;

ii. 应提供增删改的批量处理方式(建议使用Batch模式,此模式主要使用代码控制批次内的执行语句数量);

iii. 应尽量封装自定义的动态SQL标签,简化SQL开发,提高代码运行效率;

4、 提供分页查询方式:

a) 数组分页;

b) SQL分页:尽量避免使用此种分页查询方式;

c) 拦截器分页;

d) RowBounds分页;

5、 处理异常:

针对程序运行时异常和业务逻辑异常等情况应分别进行处理,同时释放相关资源;

六、 各种技术的处理方式:

1、 JDBC:

a) 说明:

利用properties.properties配置文件形式配置数据库连接属性,使用java.util.Properties读入相关信息;

b) 示例代码:

64c406cdeb839220be07a814cad3a3c8.png

JdbcFactory

2、 C3P0:

a) 说明:

利用com.mchange.v2.c3p0.ComboPooledDataSource获得数据库连接;

b) 示例代码:

d8dd2fea214e4c90d1783e57957897b5.png

C3P0Factory

3、 DBCP:

a) 说明:

利用org.apache.commons.dbcp.BasicDataSourceFactory获得数据库连接;

b) 示例代码:

cc61639a3799a79ccaf53ab28d112eb6.png

DBCPFactory

4、 MyBatis:

a) 说明:

利用org.apache.ibatis.session.SqlSessionFactoryBuilder获得数据库连接;利用org.springframework.orm.ibatis.support.SqlMapClientDaoSupport执行SQL语句;

b) 示例代码:

5f63df0fc5b7fc72f5fe9b65b9ba8cb2.png

BaseDAO

5、 Hibernate:

a) 说明:

利用org.hibernate.SessionFactory获得数据库连接;

b) 示例代码:

84b89df248297d89905ab4d5908b98df.png

HibernateSessionFactory

七、 案例分析:

1、 设计说明:

考虑到支持多种连接池的技术使用场景,因此将公共逻辑提取到父类。

2、 类图:

1b80a89926784067608e4ba9cae7ba52.png

PowerDesigner类图

3、 公共类:

2c90e393f90ff8ec1249780e6959519e.png

CommonFactory

4、 Spring配置:

a) 公共配置:

c9979ecb1aa5f49fec3818e6c08bb677.png

Spring公共配置

b) C3P0配置:

582925531c9b613dac55dd88139c5933.png

C3P0配置

c) DBCP配置:

0377d9d74011752e60b28bdbece5911e.png

DBCP配置

d) druid配置:

e6126b13d92e61c2926caceedb32ad0e.png

Druid配置

e) iBatis配置:

4da9a6f1055093795868d1da20d9d26f.png

iBatis配置

f) Hibernate配置:

0076e11ae706cc67d7b03507b8b3d9a0.png

Hibernate配置

5、 连接属性配置:

a) JDBC连接属性配置:

5f2b41933b04f1ace8689c5eb95181b0.png

JDBC连接属性配置

b) DBCP连接属性配置:

e57879fc6ec89b9e09b697c1837d94fa.png

DBCP连接属性配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值