Я создаю класс «DataSourceConnection», следуя шаблону Singleton, но я хочу подключиться к мульти-базе данных, поэтому я пишу «getDataSource (String driver, String url, String username, String password)», которая вернет переменную BasicDataSource. Я сохраняю эту переменную в атрибуте ServletContext, и когда мне нужно подключиться к какой базе данных я беру ее из ServletContext. Должен ли я попытаться использовать это решение?Уменьшится ли производительность моего веб-приложения, если я попробую этот код?
import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.DataSource;
import org.apache.commons.dbcp2.BasicDataSource;
public class DataSourceConnection implements Cloneable, Serializable {
private static final long serialVersionUID = 1L;
private BasicDataSource dataSource;
private static class DataSourceConnectionHolder {
private static DataSourceConnection INSTANCE = new CustomerDataSourceConnection();
}
protected Object clone() throws CloneNotSupportedException {
return new CloneNotSupportedException();
}
private DataSourceConnection() {
}
public static DataSourceConnection getInstance() {
return DataSourceConnectionHolder.INSTANCE;
}
public DataSource getDataSource(String driver, String url, String username, String password) {
dataSource = new BasicDataSource();
dataSource.setDriverClassName(driver);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
public Connection getConnection() throws SQLException {
return dataSource.getConnection();
}
}
Предлагаю вам просмотреть его и посмотреть. Если вы сделали это недавно, может быть любое количество вещей, которые намного важнее, чем то, что вы смотрите здесь. –
Спасибо, Питер, я пытаюсь. –
Если вы не измеряете, вы догадываетесь. Даже эксперты в области оптимизации кода часто ошибаются, когда они пытаются угадать, поэтому единственный способ - это дать некоторую оценку, чтобы дать вам подсказку. –