JDBC---数据库连接池

    技术2026-08-11  4

    数据库连接池是用来优化程序性能的。

    传统的方式是用户到servlet 到 dao 到DB的访问方式,缺点是:用户每次都要向数据库获得连接,而数据库的连接需要耗费大量的资源,创建时间也较长。如果用户的访问量过大,就会出现数据库资源的浪费,并且会造成服务器内存的溢出,拓机。数据库连接池是干什么的呢?就是在内存中开辟一块空间用来存储数据的连接,要用的时候重这里取。编写数据库连接池的思路是:

    首先需要的是实现:java.sql.DataSourece接口,这个类中实现了两个重载的方法getConnection()尝试建立与此 DataSource 对象所表示的数据源的连接。getConnection(String name,String password)尝试建立与此 DataSource 对象所表示的数据源的连接。数据库连接池的创建过程中,需要什么呢?需要获得的连接用了以后放在池子里面继续备用,那用好的实现方式呢?是extends Connection用其子类来实现么?但是这样做还需要子类连上数据库,麻烦,第二种用包装设计模式,条件:1、写一个继承与被包装对象相同的接口,在类里面定义一个变量来记住被包装得德 对象,定义一个构造函数来接受被包装的对象,覆盖想增强的方法,不想增强的方法用被包装类的方法即可。但是这里包装类要是实现的方法有上百个,怎么办呢?还行不行呢?行是行,但是很笨、很麻烦,哪还有一种方式、用动态代理。

    Proxy类,

    public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h) throws IllegalArgumentException 返回一个指定接口的代理类实例,该接口可以将方法调用指派到指定的调用处理程序。此方法相当于: Proxy.getProxyClass(loader, interfaces).          getConstructor(new Class[] { InvocationHandler.class }).          newInstance(new Object[] { handler });

    Proxy.newProxyInstance 抛出 IllegalArgumentException,原因与 Proxy.getProxyClass 相同。 loader是类装载器,interfances是要代理的对象的接口,后面是是一个内部类的实现,代表对象的要操作的方法,

     

    大名鼎鼎的数据库连接池也就是使用这些基本的东西来完成的,没什么大不了的呢!基础+++

    最新回复(0)