1
我目前使用的池連接(光速)和抽象工廠模式在Java中實現我的MySQL查詢像這樣:抽象工廠模式和HikariCP
MySqlFactoryDAO.java
public class MySqlFactoryDAO extends FactoryDAO {
private static HikariDataSource connPool_;
public static Connection createConnection() throws SQLException {
if (connPool_ == null) {
// Load database configuration
PropertiesFile props = FactoryConfig.getConfig().getDatabaseProperties();
connPool_ = new HikariDataSource();
connPool_.setJdbcUrl(props.getString(Params.DB_URL,""));
connPool_.setUsername(props.getString(Params.DB_USER,"root"));
connPool_.setPassword(props.getString(Params.DB_PASSWORD,"root"));
}
return connPool_.getConnection();
}
//-------------------------------------------------------------------------
public ProductDAO getProductDAO() {
return new ProductMySQLFactoryDAO();
}
}
ProductMySQLFactoryDAO。 java的
public class ProductMySQLFactoryDAO implements ProductDAO {
public int insertProduct(String name) {
...
Connection conn = MySqlFactoryDAO.createConnection();
...
}
}
我在想,如果這個代碼是線程安全的,我認爲有在coonPool_
初始化的時間的問題。我在維基百科上閱讀過類似「Initialization-on-demand_holder_idiom」的內容,但我不確定。有沒有人有更好的實施這個解決這個問題或只是一個更好的新的?
是的,它應該是私人的,我把它複製錯了。我想過一種同步方法,但它認爲在這裏同步會降低性能。 – amarincolas