我见过一些Java代码,其中数据库表中的行被保存在集合中(通常是ArrayList或HashMap)。
这是一个好习惯吗?
答案 0 :(得分:6)
好处是性能。查询数据库是资源和时间密集型的。如果你的表足够小,可以将项目保存在内存中,那么对本地内存的简单引用要快几个数量级。
就保持同步而言,这是一个更难的答案,并取决于用例。在大多数情况下,除非您已经设置了一些好的自定义体系结构,否则一旦您将数据库和内存中集合检索到内存中,就无法保证数据库和内存中集合是同步的。
如果你想要采用这种方法和让收集和数据库同步(有点像吃蛋糕和吃它),你可以做类似以下的事情:
当然,这是否会提高性能将取决于您的数据库被其他程序修改的频率。
您也可以在程序中简单地保持对数据库的锁定,以便在处理期间没有其他人可以修改它(允许您将项目保留在内存中和保证数据库没有变化),但这是非常糟糕的做法,因为你基本上会破坏使用该表的任何其他应用程序(除了阅读之外的其他任何东西)。
答案 1 :(得分:4)
如果您经常读取永远不会更改的相同数据,则将这些数据保存在Java集合中是有意义的,例如List或Set。这完全取决于性能,通过Java进行数据库调用和执行数据库事务确实需要时间(我在伦敦大学的论文都是关于这个问题的)。但是,如果您在Java集合中拥有该数据,则不必与具有“阻抗不匹配”的数据库保持通信,因为它们是两个独立的实体;一个使用Java范例,另一个使用数据库范例。
至于让它们保持同步,这完全是完全不同的野兽。