数据库访问和模型在内存中的存储
Database access and storing of models in memory
我正在创建一个 javafx 应用程序,但我对处理数据库的方式有疑问。我的数据库中包含的数据是通过我创建的 DAO object 获得的。在将它们添加到各自的模型 objects、ObservableList 等之后......我的模型中包含的一些数据很少更新,但其他数据经常更新。当我说更新时,我说的是模型而不是数据库的更新。
所以我不知道这两者之间最好的解决方案是什么:
- 我在启动时加载了应用程序所需的所有模型,将它们保存在某处(class 使用静态字段?)。当更新这些值时,我直接将修改保存在数据库中。
- 我在启动时加载了应用程序所需的所有模型,将它们保存在某处(class 使用静态字段?)。但只有在用户离开应用程序时才保存修改。它显示加载屏幕,应用程序将所有修改保存在数据库中。
我会倾向于第二个,因为第一个会因为大量 sql 请求而造成性能问题。
如果我必须用我所有的模型创建一个 java class,我会做一个 class 像这样:
public static ObservableValue<Boolean> value1;
public static ObservableValue<String> value2;
public static ObservableValue<Boolean> value3;
public static ObservableList value4;
etc ...
事实上,我不知道如何在应用程序中存储我的模型,并在需要时获取它们。
我应该使用依赖注入将我的 DAO 注入到需要它们的视图中吗?注入 guice.
非常感谢。
编辑:
我的 dao 系统是这样的:
我有一个名为 DAO 的摘要 class:
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();
}
还有一些 child 扩展了这个 class。
还有一个工厂 class 为我创建了 DAO object:
/**
* 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);
}
}
我认为 Guice 是一个不错的选择,通常使用 DAO 的层必须是服务或需要数据来制作逻辑的业务层。
我建议你也看看 Redis 是如何工作的,它非常有用。
我正在创建一个 javafx 应用程序,但我对处理数据库的方式有疑问。我的数据库中包含的数据是通过我创建的 DAO object 获得的。在将它们添加到各自的模型 objects、ObservableList 等之后......我的模型中包含的一些数据很少更新,但其他数据经常更新。当我说更新时,我说的是模型而不是数据库的更新。
所以我不知道这两者之间最好的解决方案是什么:
- 我在启动时加载了应用程序所需的所有模型,将它们保存在某处(class 使用静态字段?)。当更新这些值时,我直接将修改保存在数据库中。
- 我在启动时加载了应用程序所需的所有模型,将它们保存在某处(class 使用静态字段?)。但只有在用户离开应用程序时才保存修改。它显示加载屏幕,应用程序将所有修改保存在数据库中。
我会倾向于第二个,因为第一个会因为大量 sql 请求而造成性能问题。
如果我必须用我所有的模型创建一个 java class,我会做一个 class 像这样:
public static ObservableValue<Boolean> value1;
public static ObservableValue<String> value2;
public static ObservableValue<Boolean> value3;
public static ObservableList value4;
etc ...
事实上,我不知道如何在应用程序中存储我的模型,并在需要时获取它们。
我应该使用依赖注入将我的 DAO 注入到需要它们的视图中吗?注入 guice.
非常感谢。
编辑: 我的 dao 系统是这样的: 我有一个名为 DAO 的摘要 class:
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();
}
还有一些 child 扩展了这个 class。 还有一个工厂 class 为我创建了 DAO object:
/**
* 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);
}
}
我认为 Guice 是一个不错的选择,通常使用 DAO 的层必须是服务或需要数据来制作逻辑的业务层。
我建议你也看看 Redis 是如何工作的,它非常有用。