有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正在创建一个javafx应用程序,但我有一个关于如何处理数据库的问题。数据库中包含的数据是通过我创建的DAOs对象获取的。将它们添加到各自的模型对象、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注入到需要它们的视图中吗?用guice注射

多谢各位

编辑: 我的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) 个答案

  1. # 1 楼答案

    我认为Guice是一个不错的选择,通常使用DAO的层必须是一个服务层或一个需要数据来生成逻辑的业务层

    我建议你也看看Redis是如何工作的,它非常有用