我正在使用一个管理大量存储对象(每个都存储一堆简单变量)的应用程序。这些对象通过外部数据库保存,即 MySQL 和 SQlite。
我目前所做的是在启动时将所有对象加载到内存中(需要直接访问,延迟加载不是一种选择,至少目前是这样)。当一个对象的值发生变化时,它会通过在新线程中调用相应的更新语句来自动在数据库中更新自己。数据库通信是在纯 JDBC 中使用 处理的PreparedStatements
,连接不是池化的,一次只有一个活动连接。
如前所述,我对整个过程并不满意,因为当需要将多个操作写入数据库时它往往很慢,我正在寻找一种改进方法。我尝试实现一个队列以使用一次处理多个更新的批处理操作,但似乎只有当我为每个更新值都有一个单独的队列时才有可能,这似乎有点开销。添加连接池可以加速 MySQL,但不会改变 SQLite 的任何内容。
在这种情况下有什么类似的最佳实践吗?切换到 ORM 有帮助吗?