Initializing and destroying connections repeatedly is costly. Instead, what you may do is use a pool of connections. You initialize a collection of connections at the initialization phase of your application, and destroy it at the end. This way, each connection is only initialized and destroyed once.
Later on you can play around with other attributes of the pool, like whether its size stays fixed, or changes to meed demand, whether or not it is thread-safe, its size, etc. These should all be tuned for your specific application and specific needs.