zoukankan      html  css  js  c++  java
  • JDBC初始化驱动、连接

    将加载驱动、创建连接设定为仅在程序运行初始进行一次,之后重复调用即可。

    Product:商品信息;TradeRecord:交易记录。

    2个接口供业务使用

    public interface DAOFactory {
    
        public ProductDAO getProductDAO();
    
        public TradeRecordDAO getTradeRecordDAO();
    
    }

    将加载驱动写在构造函数中,并提供一个getInstance静态方法返回私有静态final成员INSTANCE,这个成员在new的同时进行了加载驱动:

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    public final class JDBCDAOFactory implements DAOFactory {
        
        private static final JDBCDAOFactory INSTANCE = new JDBCDAOFactory();
        
        private JDBCDAOFactory() {
            try {
                Class.forName("oracle.jdbc.driver.OracleDriver");
            } catch (ClassNotFoundException cnfe) {
                throw new LinkageError("JDBC加载失败", cnfe);
            }
        }
    
        public static JDBCDAOFactory getInstance() {
            return INSTANCE;
        }
    
        private ProductDAO productDAO = new ProductDAOImpl(this);
        private TradeRecordDAO tradeRecordDAO = new TradeRecordDaoImpl(this);
    
        @Override
        public ProductDAO getProductDAO() {
            return productDAO;
        }
    
        @Override
        public TradeRecordDAO getTradeRecordDAO() {
            return tradeRecordDAO;
        }
    
        Connection getConnection() throws SQLException {
            return DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:HelloWorld", "scott", "tiger");
        }
    
    }

    根据实际情况修改:

    import java.sql.*;
    
    public class ProductDAOImpl implements ProductDAO {
    
        private final JDBCDAOFactory FACTORY;
    
        ProductDAOImpl(JDBCDAOFactory factory) {
            FACTORY = factory;
        }
    
        @Override
        public ProductTO insertProduct(ProductTO productTO) throws DaoException {
            String sql = "";
            try {
                Connection conn = FACTORY.getConnection();
                try {
                    PreparedStatement pstatement = conn.prepareStatement(sql);
                    pstatement.executeUpdate();
                    .
                    .
                    .
                    conn.commit();
                    return null;
                } catch (SQLException sqle) {
                    conn.rollback();
                    throw sqle;
                } finally {
                    conn.close();
                }
            } catch (SQLException sqle) {
                throw new DaoException(sqle);
            }
        }
    
        @Override
        public void updateProduct(ProductTO productTO) throws DaoException {
        }
    
        @Override
        public void deleteProduct(ProductTO productTO) throws DaoException {
        }
    
        @Override
        public ProductTO getProductById(String id) throws DaoException {
            return null;
        }
    
    }

    最后在ProductManagerImpl里就可以:

    DAOFactory jdbcdaoFactory = JDBCDAOFactory.getInstance();

    jdbcdaoFactory.getProductDAO().insertProduct()...... 

  • 相关阅读:
    UI自动化实现多浏览器运行
    【转】C#操作XML方法集合
    日拱一卒
    敏捷开发- planning会议中的开会趣事
    敏捷开发- 可行走的骨骼
    敏捷开发- 测试人员何去何从
    Nunit & Specflow
    [转]根本原因分析(Root Cause Analysis)
    Selenium 中抓取dropdown
    网页模板
  • 原文地址:https://www.cnblogs.com/duelsol/p/2994871.html
Copyright © 2011-2022 走看看