我想在Java中使用连接池(因为每个线程创建一个连接的成本很高),所以我正在使用MysqlConnectionPoolDataSource()
对象。我跨线程保留我的数据源。因此,我像这样在整个应用程序中仅使用一个数据源:
startRegistry(); // creates an RMI registry for MySQL
MysqlConnectionPoolDataSource dataSource = new MysqlConnectionPoolDataSource();
dataSource.setUser("username");
dataSource.setPassword("password");
dataSource.setServerName("serverIP");
dataSource.setPort(3306);
dataSource.setDatabaseName("dbname");
InitialContext context = createContext(); // Creates a context
context.rebind("MySQLDS", dataSource);
现在我已经创建了我的数据源,在每个独立的线程中,我正在执行以下操作:
PooledConnection connect = dataSource.getPooledConnection();
Connection sqlConnection = connect.getConnection();
Statement state = sqlConnection.createStatement();
ResultSet result = state.executeQuery("select * from someTable");
// Continue processing results
我猜想我对dataSource.getPooledConnection();
的调用感到困惑。
此外,何时以及如何释放连接?
我在想是否自己编写会更有益,因为那样我就更熟悉所有内容,但在这种情况下,我真的不想重复造轮子:)
谢谢SO