Где правильнее расположить вызов Connection - while или main?

Подскажите, где было бы правильнее расположить вызов метода Connection() при подключении к базе данных?

MyServer, внутри него цикл while(true). В этом цикле клиенты подключаются и заполняют synchronized список строк (в методе cc.start()). Дальше сервер начинает этот непустой лист построчно запросом писать в базу данных - метод sendStringsToBaseAndClearList.

Собственно, вопрос в том, где было бы корректнее создавать подключение к базе - до цикла while(true) или внутри него? Имеется ввиду метод DriverManager.getConnection(…). Ведь тогда мы имеем постоянное, но долго висящее подключение. А если внутри цикла - то за короткий промежуток времени будет много коротких подключений.

Грубо говоря, что безопаснее для БД?..

Код:

package com.benderje.PCC;

import java.io.IOException;
import java.net.ServerSocket;
import java.sql.SQLException;

public class MyServer {
    public SynchronizedChequesListExecutor synchronizedExecutor;

    public void serverExecutor() {
        try (ServerSocket server = new ServerSocket(8000)){
            this.synchronizedExecutor = new SynchronizedChequesListExecutor();
            DataBaseConnector connector = new DataBaseConnector();
            System.out.println("Server started!");

            while(true){
                ClientCommunicator cc = new ClientCommunicator(new Phone(server));
                cc.start();

                if (synchronizedExecutor.getListWithNotPrintedChequesFilled().size() > 0){
                    connector.setConnection();
                    if(connector.isConnected()){
                        this.synchronizedExecutor.sendStringsToBaseAndClearList(
                                connector.getConnection(),
                                synchronizedExecutor.getListWithNotPrintedChequesFilled().size());
                    }
                    connector.closeConnection();
                }
            }

        } catch (IOException | SQLException e){
            throw new RuntimeException(e);
        }
    }
}

setConnection() класса DataBaseConnector:

    public void setConnection() {
        try {
            setConnectionProperties();
            connection = DriverManager.getConnection(
                    "jdbc:firebirdsql:" + url, login, password);
            isConnected = true;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

Ответы (0 шт):