作者 : manboo
.NET的ADO.NET的本身包含连接池功能,而java是在第三方开发包中提高的连接池功能因此,需要去下载第三方的连接池包,但是java的连接池一般都是在EJB或者B/S系统中使用的(虽然也有C/S下的连接池如Borland 在Jbuilder中提供的),在一个服务性系统中使用起来不是很方便.再说使用第三方的开发包也不利于维护.因此决定自己写一个连接池的开发包.此连接池中主要解决的是提高数据库访问性能,并且尽可能减少连接数目.
说明:
此连接池有三个类和一个接口组成,三个类分别是:
DBConnectionPool 数据库连接池,用户可以通过此类来使用连接池的功能.
PoolConnection 一个实现了java.sql.Connection的warp类,用来和数据库进行通讯.
theOnClose 实现了接口OnConnectionClose的一个类用还处理释放数据库连接的是动作决定是关闭数据库还是返回池中
接口 :
OnConnectionClose:此接口是一个声明,因为本人很不喜欢java的事件机制因此,我经常自己写一些接口来模拟时间,没有java的事件机制那么强大也没有那么复杂.但是效率要比java的事件机制要高那么一点点(笑:).
本来要上传这几个小类的UML图的但是我一点IE就死,所以算了.就只上传代码.还望方家指正.
代码:
| package DBTools; /** * <p>T数据库连接池工具 </p> * <p>模拟.NET的连接池,俺一直以为.NET比java优秀 </p> * <p>Copyright: 可以随便使用,如果有改进最好通知俺</p> * <p>Company:自己作品 </p> * @author董平雷 * @version 1.0 */ import java.sql.*; import java.util.*; import java.io.*; interface OnConnectionClose { public void Action(PoolConnection sender); } public class DBConnectionPool { private static Vector pConnectionVector = new Vector(); // private static int Count=0; private static int minCount = 1; private static String URL = ""; private static String User = ""; private static String Password = ""; private static String DriverName=""; synchronized public static void setMinCount(int Value) { minCount = Value; } synchronized public static int getMinCount() { return minCount; } synchronized public static int getCout() { return pConnectionVector.size(); } synchronized public static Connection getConnection() throws SQLException { PoolConnection pConnection = null; // int aCount=pConnectionVector.size(); for (int I = 0; I < pConnectionVector.size(); i++) { Object oCon = pConnectionVector.elementAt(i); if (oCon instanceof PoolConnection) { PoolConnection aCon = (PoolConnection) oCon; if (!aCon.isUsed()) { pConnection = aCon; break; } } } if (pConnection == null) { pConnection = getNewConnection(); pConnectionVector.add(pConnection); } return pConnection; } private static PoolConnection getNewConnection() throws SQLException { try { Class.forName( DriverName); }catch(ClassNotFoundException ex) { ex.printStackTrace(); } PoolConnection con = new PoolConnection(URL, User, Password); con.setOnClose(new theOnClose(pConnectionVector)); return con; } synchronized public static void SetJDBC(String url, String user, String password) { URL = url; User = user; Password = password; } synchronized public static void setURL(String url) { URL = url; } synchronized public static String getUrl() { return URL; } synchronized public static void setUser(String user) { User=user; } synchronized public static String getUser() { return User; } synchronized public static void setPassword(String password) { Password=password; } synchronized public static String getPassword() { return Password; } synchronized public static void setDriverName(String dName) { DriverName=dName; } synchronized public static String getDriverName() { return DriverName; } } |
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- Java环境安装配置 (5658篇文章)
- Java编程开发手册 (8309篇文章)
- .NET移动与嵌入式技术 (5969篇文章)
- .NET开发手册 (5670篇文章)
- .NET应用研究 (495篇文章)
- .NET实用开发 (1686篇文章)
- 开发框架:深入了解 Struts Validator (3次浏览)
- Java中的通信机制及与C/C API的集成 (1次浏览)
- 用Hibernate实现领域对象的自定义字段 (1次浏览)
- 精通Hibernate之映射继承关系(一) (0次浏览)
- 精通Hibernate之映射继承关系(二) (0次浏览)
- 美国计算机教授语出惊人:Java对学生有害 (0次浏览)
- JDK 6 JRE 6 Update 4 (0次浏览)
- 三步教你改善Java代码质量 (0次浏览)
- Java语言入门 简述Java语言回收机制 (0次浏览)
- 2008年Java开发者最迫切的五个期望 (0次浏览)



