`
sjjter
  • 浏览: 12839 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

应用JAVA数据库连接池技术提高电子商务网站性能[转贴]

阅读更多
作者:鲤鱼网 EMAIL:liyunet@yeah.net MSN:liyunet@hotmail.com

何谓网站的性能,运行效率,稳定性,可扩展性,其中最重要就是网站的访问速度,对于一个网站来说起这至关重要的作用。特别对于一个电子商务网站来说,它将 会直接影响网站的客流量及客户对整个网站信任度及信心,从而损失大量的客户,使得网站的收入减少。所以提高网站的访问速度,是每个网站所追求的。那么应该 如何提高呢?
首先,我们就要找到一个好的ISP(Internet服务供应商),尽可能的增加我们主机的网络带宽,这是最基础的。
其次,要选用更好的电脑做为服务器
, 它会提高系统的运行效率。选用比较知名的系统软件,如Linux,它较Windows有更高的效率及其稳定必,记得我大学时一台服务器,开始用的 Windows2000,速度还可以,但是每隔一个月就要重启一次,后来换成Linux,速度比较原来快了,而且,稳定的运行一年多也没有问题(你问后来 怎么样了,不好意思,我毕业了)。另外,还有选用业界口碑比较好的服务器软件,如Apache,当然,我以上所说的都是免费的产品,一般的商务网站,为了 节约成本,也比较倾向于这些产品,只有政府等大型的机构才会购买IBM或者BEA的产品,不过话说回来,那些产品组合确实提高更大的性能,利如我们曾经在 WebSphere+Oracle下跑了N多个应用,一点问题没有。所以如果公司有实力,也不妨买回来爽一下,不过现在电子商务网站好像赚钱的不多啊,省 一点是一点吧。
最后,就是要提高我们网站系统的运行效率及稳定性了,原来很多的网站都是ASP,PHP的应用,现在也有很多,仍然占多数。但是慢慢有些大的网站应用部分 或者更多的选择了JAVA做为网站应用的技术,因为它有更多更优秀更先进的东西在里面。至少,我们不用花一分钱,就可以拥有一个电子商务平台,因为它的大 多数东西都是可以免费得到的,而且它的可扩展性更强。
下面我们用JAVA技术来讨论一下。
众所周知,一个商务系统最根本的东西就是将商品的信息从数据库取出来显示到页面,然后将客户提交的东西保存到数据库。所以系统更多的是和数据库打交道,这 也就是JAVA的数据库操作。最开始JAVA是通过ODBC和数据库通信,速度比较慢,后来JAVA有了自己的连接数据库驱动,也就是JDBC,速度有所 提高,但对于整个系统而言,仍然是影响网站速度最大的瓶颈。最好的解决方式就是不访问数据库,那基本上不可能,我也曾经试图把信息存入到某些文件中,如现 在流行的XML文件,一是解决了问题,二是也省一份的银子。但是由于技术的不成熟,真正使用起来会有很多问题,虽然现在也出现了类似的“数据库”,但是效 果始终没有现在数据库那么理想,毕竟DBMS也经历了这么多年的发展,相当成熟了。只好另寻他路了。
就现在看来只能使用JDBC来存取数据库了。我相信一句话:如果你要它,首先要了解它。我先来介绍一下它的工作原理。
首先它要先创建一个数据库连接,就是要和数据库取得联系,这是最重要的。因为它是通过SOCKET方式,所以也是最影响效率的,但也是必不可少的。然后通过程序发送请求到已连接的数据库。最后,数据库响应我们的请求,并返回信息。最最后,我们要关闭数据库连接。
也许大家会想,既然创建数据库连接最影响效率,干脆我们就不关了吧,可以提高很大的效率的,很有道理,但问题是我们不知道下次怎么得到那个连接,而且每次 请求可能还要建立一个连接,都要占用系统资源,如果过多的话,就会使得数据库系统崩溃。也许有人会说,那们就把它放到一个地方,用的时候我们就拿出来用, 不用的时候就放回去,如果请求过多,我们就让它等着,有空闲的连接再给它使用。这位老兄太聪明,这可能就是我们现有的最好的解决方案。这也就是现在比较流 行的“数据库连接池”技术。
对于JAVA来说,使用连接池比较直接使用JDBC操作数据库,性能提高1.5倍以上(网上数据,有待大家测试)。现在的商业的大型服务器都有自己内置的 连接池,如WebSphere,WebLogic等,但一些免费的服务却需要我们自己处理,如Resin,Tomcat等。要省钱当然自己要麻烦一点了, 现在主要应用的免费产品有很多,如C3P0,Proxool,DBCP,PoolMan,或者自己依照写一个都没有问题。Proxool和PoolMan 都很不错,但是官方网站不再提供更新,DBCP是APACHE项目组织的,出身名门,但著名的开源项目HIBERNATE却不再提供对它的支持,主要原因 是使用的稳定性不是很好。所以下面我给大家介绍一下应用C3P0来实现免费的数据库连接池。
官方网站下载C3P0的JAR包,创建封装连接池的JAVA类:

public class C3P0Connect {

//LOG4J的日志记录,推荐使用,主要调试错误信息,重要的日志记录
private static Logger log = Logger.getLogger(C3P0Connect.class);

//JDBC的连接池接口,我们要用C3P0提供的类来实现这个接口,因为整个应用我们用一个连接池,声明为静态类
private static DataSource ds = null;

/**
* 创建静态方法,实现JDBC定义的连接池接口
* @throws SQLException
* @throws ClassNotFoundException
*/
public static void getDataSource() throws SQLException {

//建议把数据库基本信息写到配置文件中,我写到XML文件中
//加载数据库连接的驱动程序
try {
Class.forName(XMLConfig.getValue("driver"));
} catch (Exception e) {

//不能加载驱动程序,抛出异常
throw new SQLException("driver was not found:"
+ XMLConfig.getValue("driver"));
}

//创建C3P0的连接池工具
PoolConfig pcfg = new PoolConfig();

//设置初始的连接池连接数
pcfg.setInitialPoolSize(XMLConfig.getIntValue("minPoolSize"));

//设置最小的连接池连接数
pcfg.setMinPoolSize(XMLConfig.getIntValue("minPoolSize"));

//设置最大的连接池连接数
pcfg.setMaxPoolSize(XMLConfig.getIntValue("maxPoolSize"));

//设置每次增长的连接池连接数的个数
pcfg.setAcquireIncrement(XMLConfig.getIntValue("acquireIncrement"));

//初始化连接池
DataSource unpooled = DataSources.unpooledDataSource(XMLConfig
.getValue("url"), XMLConfig.getValue("user"), XMLConfig
.getValue("password"));

//实现JDBC的连接池接口
ds = DataSources.pooledDataSource(unpooled, pcfg);

//记录日志信息,说明已经成功建立连接池
log.info(" init c3p0 datasource ......");

}

/**
* 创建静态方法,关闭连接池
* @throws SQLException
*/
public static void destroyDataSource() throws SQLException {
//判断连接池是否存在
if (ds != null) {

//记录日志信息,说明开始关闭连接池
log.info(" destroy c3p0 datasource ......");

//调用C3P0接口,关闭数据库连接池
DataSources.destroy(ds);
}

}

/**
* 创建新的方法,取得数据库连接
* @return 数据库连接
* @throws SQLException
* @throws ClassNotFoundException
*/
public static Connection getConnection() throws SQLException {
//判断连接是否已经创建
if (ds == null) {

//如果没有创建,则新创建一个
getDataSource();
}

//从连接池中取出一个数据库连接
return ds.getConnection();
}
}

上面的例子是一些C3P0的主要功能,也包括了实现数据库连接的基本功能。如果大家需要实现更高级的功能,请大家查看C3P0的JAR包的参考文档。
分享到:
评论

相关推荐

    Java jdbc数据库连接池总结

    Java JDBC 数据库连接池...Java JDBC 数据库连接池技术可以解决频繁的数据库连接操作对系统资源的占用,提高系统的性能和可靠性。同时,连接池技术也可以和其它技术结合使用,例如 EJB 技术,实现高效的数据库访问。

    java数据库连接池

    总结,数据库连接池是Java应用中优化数据库访问性能的关键技术之一,通过对数据库连接的有效管理和复用,极大提升了系统的响应能力和稳定性。通过上述知识点的介绍,我们不仅理解了数据库连接池的基本原理和实现方式...

    JAVA数据库连接池

    Java数据库连接池是Java开发中一个非常重要的技术,它主要用于管理数据库连接,提高数据库操作的效率和性能。在Java应用程序中,频繁地创建和关闭数据库连接会导致大量的系统资源浪费,而连接池则可以复用已建立的...

    Java数据库连接池的原理与应用.pdf

    综上所述,数据库连接池是Java Web应用程序中重要的技术组件,它的运用有助于提高数据库操作的效率,并且能够优化整个应用程序的性能表现。掌握连接池的原理与应用,对于Java开发者来说是必不可少的一项技能。

    java_jdbc数据库连接池总结

    Java JDBC 数据库连接池总结 Java JDBC 数据库连接池是 Java 应用程序访问数据库的基本原理...Java JDBC 数据库连接池是一种高效、可靠的数据库访问技术,广泛应用于大型电子商务网站、企业级应用和数据库应用等领域。

    JAVA数据库连接池类

    数据库连接池是Java应用程序中管理数据库连接的一种高效策略,它能显著提高系统性能并减少资源消耗。本篇文章将深入解析一个自定义的JAVA数据库连接池类,帮助开发者更好地理解和运用这一关键技术。 首先,连接池的...

    java数据库连接池.rar

    数据库连接池是Java应用程序在处理数据库交互时的重要组件,它能有效地管理数据库连接,提高系统性能,降低资源消耗。在Java开发中,我们通常会使用像C3P0、Druid这样的连接池来优化数据库访问。JDBC(Java Database...

    数据库连接池技术详解

    对于多应用共享同一数据库的系统而言,可在应用层通过数据库连接的配置,实现数据库连接池技术。某一应用最大可用数据库连接数的限制,避免某一应用独占所有数据库资源。 在较为完备的数据库连接池实现中,可根据...

    轻量级java数据库连接池

    本项目提供了一个轻量级的Java数据库连接池实现,旨在简化开发过程,提高应用性能并降低资源消耗。下面将详细介绍这个轻量级Java数据库连接池的设计理念、工作原理以及如何使用。 1. **设计理念** 轻量级数据库...

    Java数据库连接池的使用示例

    总之,Java数据库连接池是提高应用性能和资源管理的关键技术,通过合理的配置和使用,可以有效提升系统的稳定性和效率。"hibernateExample1"可能是一个演示如何在Hibernate项目中集成和使用连接池的具体代码实例,...

    JAVA 完整的数据库连接池实现

    Java 数据库连接池是 Java 应用程序中用于管理数据库连接的重要工具,它极大地提高了应用程序的性能和效率。本文将详细介绍如何在 Java 中实现一个完整的数据库连接池,并探讨其核心概念、工作原理以及如何根据需求...

    JSP数据库连接池技术与应用

    在电子商务网站、在线教育平台等高并发的Web应用中,JSP配合数据库连接池技术可以实现高效的数据查询和更新,提高用户体验。例如,在用户登录、商品搜索、订单处理等场景下,通过连接池快速获取连接,完成数据交互,...

    JAVA 使用数据库连接池连接Oracle数据库全代码

    使用DBCP数据库连接池不仅可以减少频繁创建和销毁数据库连接所带来的开销,还可以更灵活地根据应用程序的需求动态调整连接池的大小,从而提高系统整体性能。此外,通过配置文件来管理数据库连接参数也使得维护更加...

Global site tag (gtag.js) - Google Analytics