Требуется создать класс DataBankManager, с помощью которого другие классы (назовём их Process1, Process2) будут сохранять данные в БД / читать данные оттуда. Причем эти другие процессы будут работать параллельно (в смысле многопоточности). Поэтому вопрос: как лучше реализовать DataBankManager? Пока что у меня родилось несколько вариантов:
- В конструкторе класса DataBankManager мы подключаемся к базе данных. Это подключение (java.sql.Connection) живёт, пока жив класс DataBankManager. Классам Process1, Process2 мы передаем ссылку на наш объект, и они сохраняют/читают данные с помощью методов класса
public void saveSomeData(Data data) {
PreparedStatement pstmt = connection.prepareStatement("INSERT ...");
pstmt.executeBatch();
pstmt.close();
}
- Тоже самое, но только Connection создается в начале метода saveSomeData и закрывается в конце его выполнения
- Соединение с базой данных открывается и закрывается статичными методами класса DataBankManager, сохранение данных так же статичными методами. Тогда нет нужды вообще создавать объект класса DataBankManager
- Или, может быть нужно использовать паттерн проектирования singleton?
Как будет правильнее? Как обычно это реализуют?