连接池有什么用 如何使用Java模拟.NET的连接池
如何使用Java模拟.NET的连接池
作者 : 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 */ 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= ; private static int minCount = ; 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 = ; 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; } }
class theOnClose implements OnConnectionClose { private Vector v; public theOnClose(Vector vt) { v = vt; } public void Action(PoolConnection sender) { v remove(sender); } } class PoolConnection implements Connection Serializable{ private Connection aCon = null; private boolean closed = false; private boolean inUse = false; private String DriverName; private OnConnectionClose onClose = null; private void writeObject(ObjectOutputStream oos) throws IOException { oos defaultWriteObject(); } private void readObject(ObjectInputStream ois) throws ClassNotFoundException IOException { ois defaultReadObject(); } protected PoolConnection() { } public PoolConnection(String Url String User String Password) throws SQLException { aCon = DriverManager getConnection(Url User Password); closed = false; inUse=true; } public PoolConnection(String Url) throws Exception { aCon = DriverManager getConnection(Url); closed = false; inUse=true; } public Statement createStatement() throws SQLException { /**@todo Implement this java sql Connection method*/ //throw new java lang UnsupportedOperationException( Method createStatement() not yet implemented ); return aCon createStatement(); } public PreparedStatement prepareStatement(String sql) throws SQLException { /**@todo Implement this java sql Connection method*/ //throw new java lang UnsupportedOperationException( Method prepareStatement() not yet implemented ); return aCon prepareStatement(sql); } public CallableStatement prepareCall(String sql) throws SQLException { /**@todo Implement this java sql Connection method*/ //throw new java lang UnsupportedOperationException( Method prepareCall() not yet implemented ); return aCon prepareCall(sql); } public String nativeSQL(String sql) throws SQLException { /**@todo Implement this java sql Connection method*/ // throw new java lang UnsupportedOperationException( Method nativeSQL() not yet implemented ); return aCon nativeSQL(sql); } public void setAutoCommit(boolean autoCommit) throws SQLException { /**@todo Implement this java sql Connection method*/ // throw new java lang UnsupportedOperationException( Method setAutoCommit() not yet implemented ); aCon setAutoCommit(autoCommit); } public boolean getAutoCommit() throws SQLException { /**@todo Implement this java sql Connection method*/ // throw new java lang UnsupportedOperationException( Method getAutoCommit() not yet implemented ); return aCon getAutoCommit(); } public void mit() throws SQLException { /**@todo Implement this java sql Connection method*/ // throw new java lang UnsupportedOperationException( Method mit() not yet implemented ); mit(); } public void rollback() throws SQLException { /**@todo Implement this java sql Connection method*/ //throw new java lang UnsupportedOperationException( Method rollback() not yet implemented ); aCon rollback(); } public void close() throws SQLException { /**@todo Implement this java sql Connection method*/ //throw new java lang UnsupportedOperationException( Method close() not yet implemented ); if(DBConnectionPool getCout()<=DBConnectionPool getMinCount()) { inUse = false; }else { closeConnection(); } } public boolean isClosed() throws SQLException { /**@todo Implement this java sql Connection method*/ //throw new java lang UnsupportedOperationException( Method isClosed() not yet implemented ); return closed; } public DatabaseMetaData getMetaData() throws SQLException { /**@todo Implement this java sql Connection method*/ // throw new java lang UnsupportedOperationException( Method getMetaData() not yet implemented ); return aCon getMetaData(); } public void setReadOnly(boolean readOnly) throws SQLException { /**@todo Implement this java sql Connection method*/ // throw new java lang UnsupportedOperationException( Method setReadOnly() not yet implemented ); aCon setReadOnly(readOnly); } public boolean isReadOnly() throws SQLException { /**@todo Implement this java sql Connection method*/ // throw new java lang UnsupportedOperationException( Method isReadOnly() not yet implemented ); return isReadOnly(); } public void setCatalog(String catalog) throws SQLException { /**@todo Implement this java sql Connection method*/ // throw new java lang UnsupportedOperationException( Method setCatalog() not yet implemented ); aCon setCatalog(catalog); } public String getCatalog() throws SQLException { /**@todo Implement this java sql Connection method*/ //throw new java lang UnsupportedOperationException( Method getCatalog() not yet implemented ); return aCon getCatalog(); } public void setTransactionIsolation(int level) throws SQLException { /**@todo Implement this java sql Connection method*/ // throw new java lang UnsupportedOperationException( Method setTransactionIsolation() not yet implemented ); aCon setTransactionIsolation(level); } public int getTransactionIsolation() throws SQLException { /**@todo Implement this java sql Connection method*/ // throw new java lang UnsupportedOperationException( Method getTransactionIsolation() not yet implemented ); return aCon getTransactionIsolation(); } public SQLWarning getWarnings() throws SQLException { /**@todo Implement this java sql Connection method*/ // throw new java lang UnsupportedOperationException( Method getWarnings() not yet implemented ); return aCon getWarnings(); } public void clearWarnings() throws SQLException { /**@todo Implement this java sql Connection method*/ //throw new java lang UnsupportedOperationException( Method clearWarnings() not yet implemented ); aCon clearWarnings(); } public Statement createStatement(int resultSetType int resultSetConcurrency) throws SQLException { /**@todo Implement this java sql Connection method*/ // throw new java lang UnsupportedOperationException( Method createStatement() not yet implemented ); return aCon createStatement(resultSetType resultSetConcurrency); } public PreparedStatement prepareStatement(String sql int resultSetType int resultSetConcurrency) throws SQLException { /**@todo Implement this java sql Connection method*/ // throw new java lang UnsupportedOperationException( Method prepareStatement() not yet implemented ); return aCon prepareStatement(sql resultSetType resultSetConcurrency); } public CallableStatement prepareCall(String sql int resultSetType int resultSetConcurrency) throws SQLException { /**@todo Implement this java sql Connection method*/ //throw new java lang UnsupportedOperationException( Method prepareCall() not yet implemented ); return aCon prepareCall(sql resultSetType resultSetConcurrency); } public Map getTypeMap() throws SQLException { /**@todo Implement this java sql Connection method*/ //throw new java lang UnsupportedOperationException( Method getTypeMap() not yet implemented ); return aCon getTypeMap(); } public void setTypeMap(Map map) throws SQLException { /**@todo Implement this java sql Connection method*/ //throw new java lang UnsupportedOperationException( Method setTypeMap() not yet implemented ); aCon setTypeMap(map); } public void setHoldability(int holdability) throws SQLException { /**@todo Implement this java sql Connection method*/ // throw new java lang UnsupportedOperationException( Method setHoldability() not yet implemented ); aCon setHoldability(holdability); } public int getHoldability() throws SQLException { /**@todo Implement this java sql Connection method*/ // throw new java lang UnsupportedOperationException( Method getHoldability() not yet implemented ); return aCon getHoldability(); } public Savepoint setSavepoint() throws SQLException { /**@todo Implement this java sql Connection method*/ //throw new java lang UnsupportedOperationException( Method setSavepoint() not yet implemented ); return setSavepoint(); } public Savepoint setSavepoint(String name) throws SQLException { /**@todo Implement this java sql Connection method*/ // throw new java lang UnsupportedOperationException( Method setSavepoint() not yet implemented ); return setSavepoint(name); } public void rollback(Savepoint savepoint) throws SQLException { /**@todo Implement this java sql Connection method*/ //throw new java lang UnsupportedOperationException( Method rollback() not yet implemented ); aCon rollback(savepoint); } public void releaseSavepoint(Savepoint savepoint) throws SQLException { /**@todo Implement this java sql Connection method*/ // throw new java lang UnsupportedOperationException( Method releaseSavepoint() not yet implemented ); aCon releaseSavepoint(savepoint); } public Statement createStatement(int resultSetType int resultSetConcurrency int resultSetHoldability) throws SQLException { /**@todo Implement this java sql Connection method*/ //throw new java lang UnsupportedOperationException( Method createStatement() not yet implemented ); return aCon createStatement(resultSetType resultSetConcurrency resultSetHoldability); } public PreparedStatement prepareStatement(String sql int resultSetType int resultSetConcurrency int resultSetHoldability) throws SQLException { /**@todo Implement this java sql Connection method*/ // throw new java lang UnsupportedOperationException( Method prepareStatement() not yet implemented ); return aCon prepareStatement(sql resultSetType resultSetConcurrency resultSetHoldability); } public CallableStatement prepareCall(String sql int resultSetType int resultSetConcurrency int resultSetHoldability) throws SQLException { /**@todo Implement this java sql Connection method*/ //throw new java lang UnsupportedOperationException( Method prepareCall() not yet implemented ); return aCon prepareCall(sql resultSetType resultSetConcurrency resultSetHoldability); } public PreparedStatement prepareStatement(String sql int autoGeneratedKeys) throws SQLException { /**@todo Implement this java sql Connection method*/ //throw new java lang UnsupportedOperationException( Method prepareStatement() not yet implemented ); return aCon prepareStatement(sql autoGeneratedKeys); } public PreparedStatement prepareStatement(String sql int[] columnIndexes) throws SQLException { /**@todo Implement this java sql Connection method*/ // throw new java lang UnsupportedOperationException( Method prepareStatement() not yet implemented ); return aCon prepareStatement(sql columnIndexes); } public PreparedStatement prepareStatement(String sql String[] columnNames) throws SQLException { /**@todo Implement this java sql Connection method*/ //throw new java lang UnsupportedOperationException( Method prepareStatement() not yet implemented ); return aCon prepareStatement(sql columnNames); } public void closeConnection() throws SQLException { if (onClose != null) { onClose Action(this); } aCon close(); } public boolean isUsed() { return inUse; } public void use() { inUse = true; } public void setOnClose(OnConnectionClose Action) { onClose = Action; } }

lishixinzhi/Article/program/Java/hx/201311/26842