Java 连接类,我应该使用Singleton吗?
我有一个名为SQLConnection的类,负责打开和关闭jdbc连接。每当我需要打开一个连接时,我需要读取一个xml文件来向类atributes收费,然后我打开连接 我想为这个类创建一个单例设计模式,并读取constructor类上的xml文件 我问:哪一种方法更好,哪些方法可以提供最佳性能?对类进行静态维护,或者每次读取xml并创建对象类?啊,这是一个有10 ~~ 100个用户的web应用程序 这就像我所做的:Java 连接类,我应该使用Singleton吗?,java,singleton,Java,Singleton,我有一个名为SQLConnection的类,负责打开和关闭jdbc连接。每当我需要打开一个连接时,我需要读取一个xml文件来向类atributes收费,然后我打开连接 我想为这个类创建一个单例设计模式,并读取constructor类上的xml文件 我问:哪一种方法更好,哪些方法可以提供最佳性能?对类进行静态维护,或者每次读取xml并创建对象类?啊,这是一个有10 ~~ 100个用户的web应用程序 这就像我所做的: public class SQLConnection { String
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";
}
}
简短回答:否 单例解决资源争用问题。 对于SQL连接,没有争用,您可以创建任意数量的连接。有关使用单例的更多详细信息,请参见: 正如其他人提到的,最好使用连接池。使用连接池也可以获得更好的性能。
关于连接池的好处:请使用真正的连接池。永远不要使用单例连接。使用连接池。可能在第一句话就停止了,真的。在你能清楚说明为什么这是最好的方法之前,不要使用单例句型。(而且几乎从来都不是。)