Доступ к базе данных и хранение моделей в памяти - PullRequest
0 голосов
/ 12 июля 2020

Я создаю приложение javafx, но у меня возник вопрос о том, как работать с моей базой данных. Данные, содержащиеся в моей базе данных, поступают с созданным мной объектом DAO. После того, как они добавлены в соответствующие объекты модели, ObservableList et c ... Некоторые данные, содержащиеся в моих моделях, обновляются редко, но другие обновляются очень часто. Когда я говорю «обновлено», я говорю об обновлениях моделей, а не базы данных.

Поэтому я не знаю, какие решения между этими двумя лучше всего:

  1. Я загружаю все модели приложения нужны при запуске, сохраните их где-нибудь (класс с полем stati c?). И когда одно из этих значений обновляется, я напрямую сохраняю изменение в базе данных.
  2. Я загружаю все модели приложения, необходимые при запуске, сохраняю их где-нибудь (класс с полем stati c?). Но сохраняйте модификацию только тогда, когда пользователи покидают приложение. Он показывает экран загрузки, и приложение сохраняет все изменения в базе данных.

Я бы предпочел второй, потому что первый создает проблемы с производительностью из-за многочисленных запросов sql.

Если бы мне пришлось создать класс java со всеми моими моделями, я бы сделал такой класс:

public static ObservableValue<Boolean> value1;

public static ObservableValue<String> value2;

public static ObservableValue<Boolean> value3;

public static ObservableList value4;

etc ...

На самом деле я не знаю, как хранить свои модели в приложение, и получаю их, когда мне нужно.

Следует ли мне использовать внедрение зависимостей для внедрения моих DAO в представления, которым они нужны? инъекция с помощью guice.

Большое спасибо.

РЕДАКТИРОВАТЬ: Моя система дао такая: у меня есть абстрактный класс под названием DAO:

public abstract class DAO<T> {

    protected Connection connection = null;

    public DAO(Connection connection){
        this.connection = connection;
    }

    public abstract Service<Boolean> create(T obj);

    public abstract Service<Boolean> delete(List<Integer> obj);

    public abstract Service<Boolean> modify(ObservableList<T> obj);

    public abstract Service<T> find(int id);

    public abstract Service<ObservableList<T>> getAll();

}

и некоторый дочерний элемент расширение этого класса. И фабричный класс, который создал для меня объект DAO:

/**
 * Factory générant des object {Dao<T>} permetant d'intéragir avec la BDD
 */
public class DAOFactory {

    private static final Connection conn = new TradingDatabase().getInstance();

    /**
     * Retourne un objet DAO<Risk> intéragissant avec la BDD
     * @return DAO
     */
    public static DAO<Risk> getRiskDAO(){
        return new RiskDAO(conn);
    }

}

1 Ответ

1 голос
/ 12 июля 2020

Я думаю, что Guice - хороший вариант, обычно уровень, использующий DAO, должен быть сервисом или бизнес-уровнем, которому нужны данные для создания logi c.

Я бы посоветовал вам также взглянуть на как работает Redis , это супер полезно.

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