2

目前我以这种方式连接到数据库:

MyClass.java

try {
    DataSource datasource = JNDILoader.getDataSourceObject(pathToSource);
    Class.forName("net.sourceforge.jtds.jdbc.Driver");
    connection = datasource.getConnection();
    stmt = connection.prepareStatement("{call storageProcedureXXX(?,?)}");
    stmt.setString(1, "X");
    stmt.setString(2, "Y");            
    result = stmt.executeQuery();
}catch (SQLException){
    //TODO
}catch(Exception){
    //TODO
} 

这适用于发出数据请求的 1 个类,但是,如果我创建一个单例类并从中获取连接会更好吗?(性能?,可维护性?,简单性?)。哪个选项会更好:Singleton vs StorageProcedures per each request?。

注意:最后,应用程序(Restful Web Service)将需要连接到不同的数据库来为不同的专业类加载数据,甚至,这些类需要从纯文本中加载数据。

4

2 回答 2

2

首先,您混合了两种不同的东西:单例和存储过程。单例是设计模式,存储过程是在数据库上执行的过程,通常封装了一些业务逻辑。

您所写的并不是连接到数据库的真正首选方式。如果您有很多请求并为每个请求子创建一个连接,那么您将遇到与数据库连接过多的问题。您应该使用连接池。Java 最著名的是DBCP。另一个是c3p0

For connection on different databases you should use something like Hibernate.

于 2013-01-25T21:46:47.507 回答
0

存储过程在数据库上执行。您通过连接向/从它传递/检索数据。

您必须检查它是否是线程安全的(我不这么认为),是否会进行并发调用。

通常一个存储过程 = 1 个事务发生在数据库中。

你为什么首先使用存储过程?

于 2013-01-25T21:27:47.323 回答