As mentioned before, a JDBC database connection is an expensive operation and connection objects should be reused. Connection pools are used for this purpose. Most web containers provide their own implementation of a connection pool along with ways to configure it using JNDI. Tomcat also lets you configure a connection pool using JNDI. The advantage of configuring a connection pool using JNDI is that the database configuration parameters, such as hostname and port, remain outside the source code and can be easily modified. See http://tomcat.apache.org/tomcat-8.0-doc/jdbc-pool.html.
However, a Tomcat connection pool can also be used without JNDI, as described in the preceding link. In this example, we ...