数据库访问和模型存储在内存中

时间:2020-07-12 13:51:23

标签: java sqlite javafx

我正在创建一个Javafx应用程序,但是我对数据库处理方式有疑问。我的数据库中包含的数据与我创建的DAO对象有关。将它们添加到各自的Model对象,ObservableList等之后,...我的模型中包含的某些数据很少更新,而其他数据则非常频繁地更新。当我说更新时,我说的是关于模型而不是数据库的更新。

所以我不知道这两者之间最好的解决方案是什么

  1. 我一开始就加载了所有需要的应用程序模型,并将它们保存在某个地方(带有静态字段的类?)。当这些值之一被更新时,我将修改直接保存在数据库中。
  2. 我一开始就加载了所有需要的应用程序模型,并将它们保存在某个地方(带有静态字段的类?)。但仅在用户离开应用程序时保存修改。它显示了一个加载屏幕,应用程序将所有修改保存在数据库中。

我倾向于第二个,因为第一个由于大量的sql请求而导致性能问题。

如果我必须使用我的所有模型创建一个Java类,那么我将做一个这样的类:

public static ObservableValue<Boolean> value1;

public static ObservableValue<String> value2;

public static ObservableValue<Boolean> value3;

public static ObservableList value4;

etc ...

实际上,我不知道如何将模型存储在应用程序中,以及在需要时获取模型。

我应该使用依赖注入将DAO注入需要它们的视图中吗?注入果汁。

非常感谢您。

编辑: 我的dao系统是这样的: 我有一个称为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 个答案:

答案 0 :(得分:1)

我认为Guice是一个不错的选择,通常使用DAO的层必须是需要数据进行逻辑处理的服务或业务层。

我建议您还看看Redis的工作原理,它非常有用。