网站大量收购闲置独家精品文档,联系QQ:2885784924

day20连接池和分页.docx

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
目标:连接池分页连接池思考:程序中连接如何管理?连接资源宝贵;需要对连接管理连接:操作数据库,创建连接操作结束,关闭!分析:涉及频繁的连接的打开、关闭,影响程序的运行效率!连接管理:预先创建一组连接,有的时候每次取出一个;用完后,放回;学习连接池:自定义一个连接池学习优秀的连接池组件DBCPC3P0自定义连接池代理:如果对某个接口中的某个指定的方法的功能进行扩展,而不想实现接口里所有方法,可以使用(动态)代理模式!Java中代理模式:静态/动态/Cglib代理(spring)使用动态代理,可以监测接口中方法的执行!如何对Connection对象,生成一个代理对象:|--Proxystatic Object newProxyInstance(ClassLoader loader,当前使用的类加载器Class?[] interfaces, 目标对象(Connection)实现的接口类型InvocationHandler h事件处理器:当执行上面接口中的方法的时候,就会自动触发事件处理器代码,把当前执行的方法(method)作为参数传入。) /** * 自定义连接池, 管理连接 * 代码实现:1. MyPool.java 连接池类,2. 指定全局参数:初始化数目、最大连接数、当前连接、连接池集合3. 构造函数:循环创建3个连接4. 写一个创建连接的方法5. 获取连接判断:池中有连接,直接拿池中没有连接,判断,是否达到最大连接数;达到,抛出异常;没有达到最大连接数,创建新的连接6. 释放连接连接放回集合中(..) * */publicclass MyPool {privateintinit_count = 3;// 初始化连接数目privateintmax_count = 6;// 最大连接数privateintcurrent_count = 0; // 记录当前使用连接数// 连接池(存放所有的初始化连接)private LinkedListConnection pool = new LinkedListConnection();//1. 构造函数中,初始化连接放入连接池public MyPool() {// 初始化连接for (int i=0; iinit_count; i++){// 记录当前连接数目current_count++;// 创建原始的连接对象Connection con = createConnection();// 把连接加入连接池pool.addLast(con);}}//2. 创建一个新的连接的方法privateConnection createConnection(){try {Class.forName(com.mysql.jdbc.Driver);// 原始的目标对象finalConnection con = DriverManager.getConnection(jdbc:mysql:///jdbc_demo, root, root);/**********对con对象代理**************/// 对con创建其代理对象Connection proxy = (Connection) Proxy.newProxyInstance(con.getClass().getClassLoader(), // 类加载器//con.getClass().getInterfaces(), // 当目标对象是一个具体的类的时候new Class[]{Connection.class}, // 目标对象实现的接口new InvocationHandler() {// 当调用con对象方法的时候,自动触发事务处理器@Overridepublic Object invoke(Object proxy, Method method, Object[] args)throws Throwable {// 方法返回值Object result = null;// 当前执行的方法的方法名String methodName = method.getName();// 判断当执行了close方法的时候,把连接放入连接池if (close.equals(methodName)) {System.out.println(begin:当前执行close方法开始!);// 连接放入连接池pool.addLast(con);System.out.println(end: 当前连接已经放入连接池了!);} else {// 调用目标对象方法result = method.invoke(con, args);}return result;}});return proxy;} catch (Excepti

文档评论(0)

gangshou + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档