powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Singleton, syncronized static method, jdbc open
25 сообщений из 105, страница 1 из 5
Singleton, syncronized static method, jdbc open
    #39827928
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!
Подскажите пожалуйста, осваиваю Java+Android studio. Познакомился с замечательным простым паттерном Синглтон, + его использование в асинхронном режиме (важно, потому что запускать буду в onCreate MainActivity в андроид студио. Но тестирую саму работу в IntelIJ ).
Есть небольшой класс вызова Connection и основных методов statement, код, который хорошо отрабатывает:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
import java.sql.*;
import java.sql.DriverManager;
public final class MySqlConnect {

    public Connection conn;
    private Statement statement;
    public static MySqlConnect db;
    private MySqlConnect() {
        String url= "jdbc:mysql://localhost:3306/";
        String dbName = "test_db?serverTimezone=Europe/Moscow";
        String driver = "com.mysql.cj.jdbc.Driver";
        String userName = "test_user";
        String password = "test_password";
        try {
            Class.forName(driver);
            this.conn =DriverManager.getConnection(url+dbName,userName,password);
        }
        catch (Exception sqle) {
            sqle.printStackTrace();
        }
    }
    public static synchronized MySqlConnect getDbCon() {
        if ( db == null ) {
            db = new MySqlConnect();
        }
        return db;
    }
    public ResultSet query(String query) throws SQLException{
        statement = db.conn.createStatement();
        ResultSet res = statement.executeQuery(query);
        return res;
    }

    public int insert(String insertQuery) throws SQLException {
        statement = db.conn.createStatement();
        int result = statement.executeUpdate(insertQuery);
        return result;
    }
}


Как вы видите , используется статичный асинхронный метод передачи url в строку подключения из конструктора.

Подскажите пожалуйста, есть ли возможность передать в статичный конструктор/метод пару текстовых переменных. (логин и пароль к примеру, один раз). И если да, то как?

И второй вопрос : в main тестирую возможность выборки простым способом:
Код: java
1.
System.out.print("Возможность выборки из базы: " + !(MySqlConnect.getDbCon().query("SELECT 1").isClosed()));


Если база выключена выпадает куча эксепшенов. Подскажите пожалуйста. Как обработать так, чтобы просто в случае неправильного ввода логина и пароля либо отсутствия подключения выдавало true /false в консоли.
...
Рейтинг: 0 / 0
Singleton, syncronized static method, jdbc open
    #39827937
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей ЛаловAndroid studio.это надо тему в ветку по андроид.
Чтобы не писать велосипедов.
Какая версия андроид?
Сергей ЛаловНо тестирую саму работу в IntelIJ ).надо сразу писать в студии андроида.
...
Рейтинг: 0 / 0
Singleton, syncronized static method, jdbc open
    #39827940
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpСергей ЛаловAndroid studio.это надо тему в ветку по андроид.
Чтобы не писать велосипедов.
Какая версия андроид?
Сергей ЛаловНо тестирую саму работу в IntelIJ ).надо сразу писать в студии андроида.

Да тут вопрос не по андроиду больше, а по тестированию асинхронного соединения и возможности передать переменную в статичный метод.

(в андроиде все работает, только дебаггинг много времени занимает и сборки не любят тестовых методов main внутри кода. Вопрос по Java в первую очередь).

Со вторым вопросом я уже сам разобрался. Остался первый)
...
Рейтинг: 0 / 0
Singleton, syncronized static method, jdbc open
    #39827950
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов Да тут вопрос не по андроиду больше, а по тестированию асинхронного соединения и возможности передать переменную в статичный метод.
ну а как быть, если ДЛЯ АСИНХРОННОСТИ нужно 2 соединения отдельных или пул коннектов?
А не одно соединение для всех потоков из синглтона?
...
Рейтинг: 0 / 0
Singleton, syncronized static method, jdbc open
    #39827951
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов вопрос не по андроиду больше
тогда и не пишите про андроид и активити вообще ничего в вопросе.
...
Рейтинг: 0 / 0
Singleton, syncronized static method, jdbc open
    #39827953
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а зачем синглтон если есть рефлексия?
ну тоесть как бы да по шаблонам- но какой смысл если любой вася возьмет твой синглтон и трахнет его столько раз,сколько ему будет нужно?
как по мне инкапсуляция и синглтоны в чатсности -какой то анонизм безсмысленный и беспощадный
...
Рейтинг: 0 / 0
Singleton, syncronized static method, jdbc open
    #39827954
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79,
как бы да. Синглтон счас антипаттерн.
...
Рейтинг: 0 / 0
Singleton, syncronized static method, jdbc open
    #39827956
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79а зачем синглтон если есть рефлексия?
ну тоесть как бы да по шаблонам- но какой смысл если любой вася возьмет твой синглтон и трахнет его столько раз,сколько ему будет нужно?
как по мне инкапсуляция и синглтоны в чатсности -какой то анонизм безсмысленный и беспощадный
затем что рефлексия используется для других целей. а так конечно да. если очень хочется натянуть сову на глобус - у тебя это отлично получится.

по теме ТСа - а в чем проблема просто в метод getDbConn передавать переменные которые следом пробросишь в конструктор? или я не понял вопрос ТСа?
...
Рейтинг: 0 / 0
Singleton, syncronized static method, jdbc open
    #39827957
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов,
в каждой активити, в конструкторе, поставьте
DriverManager.getConnection(url+dbName,userName,password);
И пусть каждое окошко делает отдельный коннект к базе.
...
Рейтинг: 0 / 0
Singleton, syncronized static method, jdbc open
    #39827958
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTпо теме ТСа - а в чем проблема просто в метод getDbConn передавать переменные которые следом пробросишь в конструктор? или я не понял вопрос ТСа?
проблема в архитектуре - зачем синглетон и кто его сегодня пишет?
...
Рейтинг: 0 / 0
Singleton, syncronized static method, jdbc open
    #39827961
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79а зачем синглтон если есть рефлексия?
ну тоесть как бы да по шаблонам- но какой смысл если любой вася возьмет твой синглтон и трахнет его столько раз,сколько ему будет нужно?
как по мне инкапсуляция и синглтоны в чатсности -какой то анонизм безсмысленный и беспощадный
трахают маньку на сеновале. а мы программируем. если ты не понимаешь зачем синглтон то это не означает, что он не нужен. синглтон - это один из стандартных дизайн-паттернов.
...
Рейтинг: 0 / 0
Singleton, syncronized static method, jdbc open
    #39827962
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTесли ты не понимаешь зачем синглтон то это не означает, что он не нужен
а тебе не интересно обосновать нужность?
Сам писал "его"? Или статический класс?
...
Рейтинг: 0 / 0
Singleton, syncronized static method, jdbc open
    #39827963
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpandreykaTпо теме ТСа - а в чем проблема просто в метод getDbConn передавать переменные которые следом пробросишь в конструктор? или я не понял вопрос ТСа?
проблема в архитектуре - зачем синглетон и кто его сегодня пишет?
в смысле кто? и где там проблема я чот не понял? суть в том что тебе надо держать в системе не более одного инстанса какого-то конкретного класса. чем это вызвано? ну например, сервис, с которым тебе надо обмениваться данными может поддерживать не более одного подключения, и это подключение осуществляется в написаном тобою объекте. а у тебя приложение без синглтона наплодит их N и всё сломается.
...
Рейтинг: 0 / 0
Singleton, syncronized static method, jdbc open
    #39827964
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

Из всей массы советчиков по топику, вы один по коду непосредственно подсказали. Отдельно вам спасибо. Остальным рассуждальщикам спасибо за фон)
...
Рейтинг: 0 / 0
Singleton, syncronized static method, jdbc open
    #39827965
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpandreykaTесли ты не понимаешь зачем синглтон то это не означает, что он не нужен
а тебе не интересно обосновать нужность?
Сам писал "его"? Или статический класс?
в спринге, синглтон - это дефолтовый бин скоуп например. т.е. ты пометил класс аннотацией сервис, компонент, бин и т.п. без дополнительных уточнений - ты создал синглтон.
...
Рейтинг: 0 / 0
Singleton, syncronized static method, jdbc open
    #39827966
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTсуть в том что тебе надо держать в системе не более одного инстанса какого-то конкретного класса. чем это вызвано? ну например, сервис, с которым тебе надо обмениваться данными может поддерживать не более одного подключения, и это подключение осуществляется в написаном тобою объекте. а у тебя приложение без синглтона наплодит их N и всё сломается.
+1
Ну а применительно к коннекту в базу?
...
Рейтинг: 0 / 0
Singleton, syncronized static method, jdbc open
    #39827967
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей ЛаловPetroNotC Sharp,
Из всей массы советчиков по топику, вы один по коду непосредственно подсказали. Отдельно вам спасибо. Остальным рассуждальщикам спасибо за фон)
анализировать чужие ответы в форуме (кто и сколько) не совсем скромно.
Это совет).
...
Рейтинг: 0 / 0
Singleton, syncronized static method, jdbc open
    #39827968
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей ЛаловPetroNotC Sharp,

Из всей массы советчиков по топику, вы один по коду непосредственно подсказали. Отдельно вам спасибо. Остальным рассуждальщикам спасибо за фон)
жаль что ты не понял и даже не попытался разобраться что там происходит под капотом и почему это сделано именно так, а не иначе.
...
Рейтинг: 0 / 0
Singleton, syncronized static method, jdbc open
    #39827970
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpandreykaTсуть в том что тебе надо держать в системе не более одного инстанса какого-то конкретного класса. чем это вызвано? ну например, сервис, с которым тебе надо обмениваться данными может поддерживать не более одного подключения, и это подключение осуществляется в написаном тобою объекте. а у тебя приложение без синглтона наплодит их N и всё сломается.
+1
Ну а применительно к коннекту в базу?
надо смотреть как это работает. возможно ли при каждом вызове любой крад операции поднимать новый коннект к базе чтоб записать а потом его закрывать, насколько это ресурсозатратно, сколько отжирает времени открытие каждого нового коннекшина, как скоро у тебя пул кончится и т.п.
если ты будешь где попало в коде делать вот это вот: DriverManager.getConnection(url+dbName,userName,password); то будет именно это. плюс еще ты и мешаешь всё в кучу.
...
Рейтинг: 0 / 0
Singleton, syncronized static method, jdbc open
    #39827975
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTкак скоро у тебя пул кончится и т.п.ну дак либо пул, либо синглетон.
Так ведь?
Синглетон это один коннект на весь десктоп проект.
А пул коннектов даёт асинхронность.
Поэтому либо в каждую форму коннект (у нас десктоп!), либо пул коннектов.
imho
...
Рейтинг: 0 / 0
Singleton, syncronized static method, jdbc open
    #39827984
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

10 лет на форуме уже, раньше с odbc общался из другого языка. Успешно. Написал несколько полноценных клиент серверное приложений под относительно крупные конторы. Морды на vb в основном. На стороне сервера - ms sql, mysql. В java 2 месяца. Офигенный язык. Курю, осваиваю с малого. Особенно поражает возможность гибко масштабировать структуру взаимодействия классов. В vb конечно для ленивых побольше плюшек)) Пример синглтона взял из сети, сам немного допилил. По вопросу номер 1-поднять соединение с базой как можно быстрей. База одна, соединение одно. И попробовать его заставить работать асинхронно. Jdbc- потому что знаю его собрата сносно. Он само и кэширует и выдает и много чего ещё, почему то молодежь лучше будет писать мотню кода, чем использовать то что есть)
...
Рейтинг: 0 / 0
Singleton, syncronized static method, jdbc open
    #39827988
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
джава старьё. смотри на скалу и котлин. понравятся еще больше. я гарантирую
...
Рейтинг: 0 / 0
Singleton, syncronized static method, jdbc open
    #39827991
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTджава старьё. смотри на скалу и котлин. понравятся еще больше. я гарантирую
это ему не зайдёт после бейсика.
И в андроиде больше обычной java чем котлин.
Сергей ЛаловПример синглтона взял из сети, сам немного допилил.
сеть это большая помойка. Надо проверять что берете.
Сергей ЛаловПо вопросу номер 1-поднять соединение с базой как можно быстрей.
ну например 0,1сек при открытии формы. Много? Делайте пул.
...
Рейтинг: 0 / 0
Singleton, syncronized static method, jdbc open
    #39827993
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpandreykaTкак скоро у тебя пул кончится и т.п.ну дак либо пул, либо синглетон.
Так ведь?
Синглетон это один коннект на весь десктоп проект.
А пул коннектов даёт асинхронность.
Поэтому либо в каждую форму коннект (у нас десктоп!), либо пул коннектов.
imho
пул я говорил в контексте базы данных. у нее тоже ограничено количество подключений. не забывай что новый коннекшн это новые ресурсы которые надо утилизировать и тебе и серверу бд. для каждой формы устанавливать отдельный коннекшн к базе может быть и накладно по ресурсам. и я не уверен, что это в контексте бестпрактизов. хотя если у тебя скажем, аш2 и всё локально - то плевать.

но, опять же, возвращаясь к бестпрактизам....
...
Рейтинг: 0 / 0
Singleton, syncronized static method, jdbc open
    #39827994
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в андройде даже гугл всю новую доку делает на котлине и позиционирует его как основной язык для разработки андройд-приложений.
...
Рейтинг: 0 / 0
25 сообщений из 105, страница 1 из 5
Форумы / Java [игнор отключен] [закрыт для гостей] / Singleton, syncronized static method, jdbc open
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]