• 如何使用单例模式返回一个安全的Connection


    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    public class ConnectDemo {
        public enum MyEnumSingleton {
    
            connectionFactory;
            private Connection conn;
    
            private MyEnumSingleton() {
                try {
                    String url = "jdbc:mysql://localhost:3306/mydb";
                    String name = "root";
                    String password = "";
                    String Driver = "com.mysql.jdbc.Driver";
    
                    Class.forName(Driver);
    
                    conn = DriverManager.getConnection(url, name, password);
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
    
                } catch (ClassNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
    
            public Connection getConn() {
                return conn;
            }
    
        }
    
        public static Connection getConn() {
            return MyEnumSingleton.connectionFactory.getConn();
        }
    
    }

    使用枚举类时,构造方法会被自动调用。

    再修改一下,降低一下耦合度,将建立连接的四大参数改成在配置文件中获取

    首先在项目目录下建立一个配置文件

    把参数添加进去

    变成从配置文件中读取参数,这样修改的话只用修改配置文件就可以了

    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.util.Properties;
    
    public class ConnectDemo {
        public enum MyEnumSingleton {
    
            connectionFactory;
            private Connection conn;
    
            private MyEnumSingleton() {
                try {
                    InputStream in=Connection.class.getClassLoader()
                            .getResourceAsStream("dbconfig.properties");
                    Properties pro=new Properties();
                    pro.load(in);
                    String url = pro.getProperty("url");
                    String name = pro.getProperty("name");
                    String password =pro.getProperty("password");
                    String Driver = pro.getProperty("DriverClassName");
    
                    Class.forName(Driver);
    
                    conn = DriverManager.getConnection(url, name, password);
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
    
                } catch (ClassNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }catch(IOException e){
                    e.printStackTrace();
                }
            }
    
            public Connection getConn() {
                return conn;
            }
    
        }
    
        public static Connection getConn() {
            return MyEnumSingleton.connectionFactory.getConn();
        }
    
    }
  • 相关阅读:
    hadoop机架感知
    Ajax请求结果的缓存
    Blocks语法
    CentOS yum 源的配置与使用
    .NET三层架构开发初步
    Mac技巧合集第一期
    Fine Uploader文件上传组件
    WCF 系列文章
    http权威指南读书笔记
    WCF Service Hosting的线程关联性Mono实现比.NET统一?
  • 原文地址:https://www.cnblogs.com/wxw7blog/p/7860358.html
Copyright © 2020-2023  润新知