5

I searched for connection pooling and read about it. If I understand it correctly, a connection pool is like a collection of open connections. If a connection is established or created it should be added to the connection pool, and if that connection is closed it should be removed in connection pool; while it is open I can use it again and again.

While reading these tutorials and explanations about connection pooling I have some questions:

  1. Can a pool of connections only be used on a certain computer? Like ComputerA cannot share its connection pool with ComputerB?

  2. Where should connection.close() be placed?

Is it correct to use a connection ONLY when selecting/loading record? After I got the returned records/data I close the connection at finally statement. Same as adding, editing and deleting records. And while it is processing I place a progress bar so the user will have to wait for it to be completed and to do some process again, which means I will only open connection one at a time.

Thanks for the explanation. :)

Paul Bellora
  • 54,340
  • 18
  • 130
  • 181
aymankoo
  • 653
  • 6
  • 12

1 Answers1

9

Note: I assume we're talking about the java.sql.Connection interface.

Can a pool of connections only be used on a certain computer? Like ComputerA cannot share its connection pool with ComputerB?

A connection exists between a running application and a database. Naturally, two different machines can't share the same running application, so they can't share connections with a database.

Where should connection.close() be placed?

You should always make sure to call close() on a Connection instance after using it (typically in a finally block). If pooling is being used, this will actually return the connection to the pool behind the scenes. Reference: Closing JDBC Connections in Pool

Is it correct to use a connection ONLY when selecting/loading record? After I got the returned records/data I close the connection at finally statement.

Yes, that's correct. You don't want to manually hang on to a Connection reference - use it to execute SQL/DML and then check it back into the pool by calling close() in the finally block, just like you're doing.

Community
  • 1
  • 1
Paul Bellora
  • 54,340
  • 18
  • 130
  • 181
  • 2
    All true, and if you're using Java 7 you can use the new [AutoCloseable interface](http://docs.oracle.com/javase/7/docs/api/java/lang/AutoCloseable.html) instead of putting the close() in a finally block. Check out [this example from the Oracle docs](http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html) – Eyal May 09 '13 at 12:00