Задать вопрос

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

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

Пример:
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 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@1nd1go
Смотря что таке DB. Если оно само управляет разделяемым доступом к блокирующим ресурсам (коннекшнами там и т.п.), и в тоже время не является само блокирующим или другим боттл-неком, то можно сделать его Синглтоном (ну или статическим полем).

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

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

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

Похожие вопросы