连接池Connection Pool 单例设计

桃扇骨 2022-06-13 02:28 243阅读 0赞

连接池单例模式

1.私有化ComboPooledDataSource将其作为属性,使其实现单例
2.DataSourceFactory实现懒汉模式,这样作为属性的连接池cpds也就变为了单例
3.从连接池中获取连接Connection

代码如下:

  1. package com.tcb.dao.uitls;
  2. import java.sql.Connection;
  3. import com.mchange.v2.c3p0.ComboPooledDataSource;
  4. /*
  5. * 连接池单例模式
  6. *
  7. * 1.私有化ComboPooledDataSource将其作为属性,使其实现单例
  8. * 2.DataSourceFactory实现懒汉模式,这样作为属性的连接池cpds也就变为了单例
  9. * 3.从连接池中获取连接Connection
  10. */
  11. public class DataSourceFactory {
  12. //1.私有化ComboPooledDataSource将其作为属性,使其实现单例
  13. private ComboPooledDataSource cpds;
  14. //2.DataSourceFactory实现懒汉模式
  15. //2.1私有化构造方法--并初始化cpds
  16. private DataSourceFactory() {
  17. cpds = new ComboPooledDataSource("c3p0-config");
  18. }
  19. //2.2 私有化属性
  20. private static DataSourceFactory sFactory = null;
  21. //2.3 返回SessionFactory单例
  22. public static DataSourceFactory getSessionFactoryInstance() {
  23. if (sFactory == null) {
  24. sFactory = new DataSourceFactory();
  25. }
  26. return sFactory;
  27. }
  28. //3.从连接池中获取连接Connection
  29. public Connection getSession() throws Exception {
  30. System.out.println("cpsd========="+cpds);
  31. Connection connection = cpds.getConnection();
  32. System.out.println("connection========="+connection);
  33. return connection;
  34. }
  35. public static void main(String[] args) {
  36. //测试
  37. DataSourceFactory dataSourceFactory=DataSourceFactory.getSessionFactoryInstance();
  38. DataSourceFactory dataSourceFactory2=DataSourceFactory.getSessionFactoryInstance();
  39. try {
  40. dataSourceFactory.getSession();
  41. dataSourceFactory.getSession();
  42. dataSourceFactory.getSession();
  43. } catch (Exception e) {
  44. // TODO Auto-generated catch block
  45. e.printStackTrace();
  46. }
  47. }
  48. }

测试结果:

这里写图片描述

发表评论

表情:
评论列表 (有 0 条评论,243人围观)

还没有评论,来说两句吧...

相关阅读