Корректность работы с SQLite на Java

197
17 ноября 2017, 06:05

Добрый день, работаю с SQlite на java, вот у меня появился на корректность следующих строк кода.

static CookieManager cookieManager = new CookieManager();
static Connection dataConnection;
static Statement dataStatement;

Не будет ли накладным постоянное хранение в памяти этих 3-х объектов? dataConnection и dataStatement далее инициализируются в первом используемом классе наследнике(наследуются все классы от класса, в котором объявлены эти статические переменные). Эти переменные используются всеми экземплярами этих классов-наследников и каждый экземпляр специализируется на загрузке определённой информации. Так разумно их делать static или лучше каждый раз при сохранении или загрузке инфы создавать локальный объект определённого классе-наследника и обходится без static'a?

Answer 1

Я бы посоветовал бы Вам лучше создать класс Singleton для подключение к SQLite и пользоваться им из любого класса.

package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
class JDBCConnector {
    private static HashMap<String, Connection> connections = new HashMap<>();
    private JDBCConnector() {
    }
    static synchronized Connection getConnection(String pathToDB) {
        try {
            Class.forName("org.sqlite.JDBC");
            if (connections.containsKey(pathToDB)) {
                return connections.get(pathToDB);
            } else {
                Connection connection =
                        DriverManager.getConnection("jdbc:sqlite:" + pathToDB);
                connections.put(pathToDB, connection);
                return connection;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            System.out.println("Where is your JDBC Driver?");
            e.printStackTrace();
        }
        return null;
    }
}

Этот класс имеет только один статичный метод getConnection, и он хранит все подключения на всякий случай если вы будете работать с несколькими базами данных. Он хорош еще тем, что если в будущем вы захотите работать с MySQL'ом или другой базой данных, то Вам надо будет заменить только этот класс.

READ ALSO
Как сделать чтоб при пуше менялась переменная

Как сделать чтоб при пуше менялась переменная

Такой вот вопос, у нас несколько человек работет над проектом, и в классе глобальных переменных есть такая boolean isDebugMode

186
Как записать объекты java из List в json в цикле?

Как записать объекты java из List в json в цикле?

В файле filejson сохраняется только один объект, последний

204
Запись видео и обработка

Запись видео и обработка

Мне нужно записать видео и отредактировать(добавить текст на видео или фильтры какие нибудь) как в Instagram

221
Как инициализировать другие окна в java?

Как инициализировать другие окна в java?

Что я имею ввиду?Например: я знаю что какое-то окно, назовем его x будет открыто к моменту запуска программы, и в этом окне допустим запрашивается...

173