我见过一些 Java 代码,其中数据库表中的行被保存在一个集合中(通常是 ArrayList 或 HashMap)。
- 这种方法有什么好处?
- 如何使集合和表保持同步?
- 为什么不为每次检索向数据库发送查询?
这是一个好的做法吗?
最佳答案
好处是性能。查询数据库是资源和时间密集型的。如果您的表足够小,您可以将项目保存在内存中,那么简单地引用本地内存会快几个数量级。
就保持同步而言,这是一个更困难的答案,并且取决于用例。在大多数情况下,除非您设置了一些良好的自定义架构,否则无法保证一旦您将数据库和内存中的集合检索到内存中,它们就会同步。
如果您想要采用这种方法并且让集合和数据库同步(有点像吃蛋糕和吃蛋糕一样),您可以做类似下面的事情:
- 在您的表上为任何创建、插入、更新或删除设置数据库触发器。
- 让触发器运行脚本以某种方式通知您的应用程序(监控线程、服务等)。
- 让应用程序在收到通知后通过读取数据库更新集合。
当然,这是否会给您带来性能提升取决于您的数据库被其他程序修改的频率。
您也可以在您的程序中简单地保持对数据库的锁定,以便在您的处理期间没有其他人可以修改它(允许您将项目保存在内存中并且保证数据库未更改),但这是非常糟糕的做法,因为您基本上会破坏同时使用该表的任何其他应用程序(除了读取之外的任何内容)。
关于java - 在 Collection 中保存表行有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16016485/