A DataSource is usually a group of Connections. Many web/app severs allow for the creation of a DataSource via a config file/tool. Basically, if you have an app that access that database frequently, a DataSource is the way to go. If you develop a web store front, you want everyone to be able to view your catalog. It would not be very performant to create a dedicated Connection for each new user. This would cause a large number of new Connections (which is expensive) for a user that will use it only briefly. The DataSource allows a request to grab a Connection, use it, and put it back in the pool when complete. The eliminates the steps of creating a new Connection and storing a possibly high number of Connections. Most servers allow you to set the number of Connections in a pool at start, the number to increment if that is not enough and a maximum number to user.