public static SqlTemplate create(Config config) { DataSourceProvider dataSourceProvider = ServiceLoader.load(DataSourceProvider.class, config); DataSource dataSource = dataSourceProvider.getDataSource(config); SqlTemplate sqlTemplate = HOLDER.get(dataSource); if (sqlTemplate != null) { return sqlTemplate; } synchronized (HOLDER) { sqlTemplate = HOLDER.get(dataSource); if (sqlTemplate != null) { return sqlTemplate; } sqlTemplate = new SqlTemplateImpl(dataSource); HOLDER.putIfAbsent(dataSource, sqlTemplate); return sqlTemplate; } }
public static SqlTemplate create(Config config) { DataSourceProvider dataSourceProvider = ServiceLoader.load(DataSourceProvider.class, config); DataSource dataSource = dataSourceProvider.getDataSource(config); SqlTemplate sqlTemplate = HOLDER.get(dataSource); if (sqlTemplate != null) { return sqlTemplate; } synchronized (HOLDER) { sqlTemplate = HOLDER.get(dataSource); if (sqlTemplate != null) { return sqlTemplate; } sqlTemplate = new SqlTemplateImpl(dataSource); HOLDER.putIfAbsent(dataSource, sqlTemplate); return sqlTemplate; } }
public static SqlTemplate create(Config config) { DataSourceProvider dataSourceProvider = ServiceLoader.load(DataSourceProvider.class, config); DataSource dataSource = dataSourceProvider.getDataSource(config); SqlTemplate sqlTemplate = HOLDER.get(dataSource); if (sqlTemplate != null) { return sqlTemplate; } synchronized (HOLDER) { sqlTemplate = HOLDER.get(dataSource); if (sqlTemplate != null) { return sqlTemplate; } sqlTemplate = new SqlTemplateImpl(dataSource); HOLDER.putIfAbsent(dataSource, sqlTemplate); return sqlTemplate; } }