java数据库访问和在内存中存储模型
我正在创建一个javafx应用程序,但我有一个关于如何处理数据库的问题。数据库中包含的数据是通过我创建的DAOs对象获取的。将它们添加到各自的模型对象、ObservableList等中后。。。我的模型中包含的一些数据很少更新,但其他数据经常更新。当我说更新时,我指的是模型的更新,而不是数据库的更新
所以我不知道这两者之间最好的解决方案是什么:
- 我一开始就加载所有需要的应用程序模型,将它们保存在某个地方(是否使用静态字段?)。当其中一个值被更新时,我直接将修改保存在数据库中李>
- 我一开始就加载所有需要的应用程序模型,将它们保存在某个地方(是否使用静态字段?)。但仅在用户离开应用程序时保存修改。它显示一个加载屏幕,应用程序将所有修改保存在数据库中李>
我倾向于第二种方法,因为第一种方法由于大量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 楼答案
我认为Guice是一个不错的选择,通常使用DAO的层必须是一个服务层或一个需要数据来生成逻辑的业务层
我建议你也看看Redis是如何工作的,它非常有用