У меня есть класс под названием SQLConnection, отвечающий за открытые и закрытые соединения jdbc. Всегда, когда мне нужно открыть соединение, мне нужно прочитать xml-файл для зарядки атрибутов класса, а затем я открою соединение.Класс подключения, следует ли использовать Singleton?
Я думаю о создании шаблона одноэлементного дизайна для этого класса и чтения xml-файла в классе contructor.
Я спрашиваю: какой лучший подход и что обеспечивает лучшую производительность? У вас есть статический подход к классу или чтение xml и создание класса объектов каждый раз? Ahh, это веб-приложение с 10 ~ 100 пользователями.
Вот как я делаю:
public class SQLConnection {
String url = "";
String driver = "";
String userName = "";
String password = "";
public Connection openConnection() {
Connection conn = null;
this.setAtributes();
try {
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(url, userName, password);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
public void closeConnection(Connection conn) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
//read a xml file that have database infos
public void setAtributes(){
this.url = "lalala";
this.userName = "lalala";
this.password = "lalala";
this.driver = "lalala";
}
}
Вот что я хочу сделать:
public class SQLConnection {
private static SQLConnection instance;
String url = "";
String driver = "";
String userName = "";
String password = "";
private SQLConnection() {
}
public static synchronized SQLConnection getInstance() {
if (instance == null)
instance = new SQLConnection();
setAtributes(instance);
return instance;
}
public Connection openConnection() {
Connection conn = null;
try {
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(url, userName, password);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
//read a xml file that have database infos
public static void setAtributes(SQLConnection instance){
instance.url = "lalala";
instance.userName = "lalala";
instance.password = "lalala";
instance.driver = "lalala";
}
}
Используйте вместо этого реальный пул соединений. – Kayaman
** Никогда не используйте ** Singleton для подключения. Используйте пулы соединений. – BackSlash
Могло бы остановиться на первом предложении, действительно. Не используйте Singleton, период, пока вы не сможете сформулировать, почему это лучший способ. (И это почти никогда не бывает.) – cHao