Как лучше сделать объект для работы с БД: поместить ссылку в статичную переменную или пересоздавать?

Как лучше сделать объект для работы с БД: поместить ссылку в статичную переменную или пересоздавать каждый раз когда нужно?

Пример:
public class Test {
    static DB db = new DB();
    
    public static void main(String[] args){
        //some code
        db.sendRequest();
    }
    
    private static void someMethod(){
        //come code
        db.sendRequest();   
    }
}


OR

public class Test {
    public static void main(String[] args){
        //some code
        new DB().sendRequest();
    }

    private static void someMethod(){
        //come code
        new DB().sendRequest();
    }
}
  • Вопрос задан
  • 2589 просмотров
Пригласить эксперта
Ответы на вопрос 2
@1nd1go
Смотря что таке DB. Если оно само управляет разделяемым доступом к блокирующим ресурсам (коннекшнами там и т.п.), и в тоже время не является само блокирующим или другим боттл-неком, то можно сделать его Синглтоном (ну или статическим полем).

Также стоит принять во внимание стоимость создания такого объекта.
Ответ написан
LeoCcoder
@LeoCcoder
нужно почитать документацию на класс DB и делать так, как там написано. Или:
1. если это ваш самописный класс, то только вам понятнее как оптимальнее сделать.
2. eсли вы пишете все в один поток и DB работает синхронно, то будет не важно сколько DB вы насоздаете, создайте один статический и пользуйтель.
3. если создание нескольких экземляров DB позволит каким-то образом поднять производительность вашего приложения и вам ЭТО ОЧЕНЬ НАДО, то нужно думать. Возможно нужно будет сделать пул, как уже советовали. Если предоставите документацию на класс DB и конфигурацию базы, то думаю смогу помочь действительно практическими советами, а не теорией.

П.С. не все запросы база умеет выполнять парралейно. Даже если вы будете держать несколько соединений к базе, она может всеравно все запросы выполнять последовательно. Нужно смотреть документацию на базу.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽