java - 在 Collection 中保存表行有什么好处?

标签 java database collections

我见过一些 Java 代码,其中数据库表中的行被保存在一个集合中(通常是 ArrayList 或 HashMap)。

  • 这种方法有什么好处?
  • 如何使集合和表保持同步?
  • 为什么不为每次检索向数据库发送查询?

这是一个好的做法吗?

最佳答案

好处是性能。查询数据库是资源和时间密集型的。如果您的表足够小,您可以将项目保存在内存中,那么简单地引用本地内存会快几个数量级。

就保持同步而言,这是一个更困难的答案,并且取决于用例。在大多数情况下,除非您设置了一些良好的自定义架构,否则无法保证一旦您将数据库和内存中的集合检索到内存中,它们就会同步。

如果您想要采用这种方法并且让集合和数据库同步(有点像吃蛋糕和吃蛋糕一样),您可以做类似下面的事情:

  1. 在您的表上为任何创建、插入、更新或删除设置数据库触发器。
  2. 让触发器运行脚本以某种方式通知您的应用程序(监控线程、服务等)。
  3. 让应用程序在收到通知后通过读取数据库更新集合。

当然,这是否会给您带来性能提升取决于您的数据库被其他程序修改的频率。

您也可以在您的程序中简单地保持对数据库的锁定,以便在您的处理期间没有其他人可以修改它(允许您将项目保存在内存中并且保证数据库未更改),但这是非常糟糕的做法,因为您基本上会破坏同时使用该表的任何其他应用程序(除了读取之外的任何内容)。

关于java - 在 Collection 中保存表行有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16016485/

相关文章:

sql - 如何查找 Oracle SYSTEMDB 表

r - 无法使用 RSQLite 连接到数据库

WPF:无法在 XAML 中设置只读集合的​​项目

java - 从 Java 列表结构中选择基数最低的元素

java - ConcurrentHashMap 上的迭代器

java - Websphere 在运行时工作但在调试时失败

java - 在单元/集成测试阶段将属性值注入(inject)/覆盖到 Spring Boot 属性文件

java - Android Studio错误: 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference

java - 不带双引号的字符串追加

android - 如何在Android 6.0应用程序中连接到MySQL