从Resultsets映射对象和效率

时间:2014-03-21 20:06:24

标签: java jdbc mapping resultset

我正在开发一个程序,它从用户对象输出名称和各种其他细节(名称,地址,ID等)。通过使用我的数据库中的JDBC来填充用户对象。我已经学会了如何将结果集对象映射到我的用户对象,以及如何从该对象到屏幕显示各种信息(名称等)。

我的查询是我将需要访问许多对象(有时全部:用于搜索,更新),我认为连接到db,接收我的结果集并将其映射到对象可能是愚蠢的每次我需要一些信息。相反,我想我会从数据库中获取所有行并映射所有对象,然后将它们放在arraylist中,我可以更容易地选择我想要的任何特定信息。

这是一种效率低下或编码不好的做法吗?这个逻辑中存在一个巨大的缺陷吗?

1 个答案:

答案 0 :(得分:0)

缓存应用程序中的所有行有很多缺点:

  • 它没有扩展:如果你有100万用户怎么办?如果每个用户有5个订单,引用7个产品等等怎么办?你很快就会在内存中找到完整的数据库,而这是不可持续的。
  • 它更难正确地执行:您必须处理多个同时读取和修改用户的请求。数据库事务为您做到了这一点。
  • 它会强制您的应用成为数据库的独占所有者。如果任何其他应用程序(或脚本或批处理)访问数据库,您的应用程序将无法识别它,将显示陈旧数据,并将生成错误,因为,例如,它将尝试更新不在的用户# 39; t不再存在。

您在应用程序中拥有的状态越多,就越难以使其正确和快速。信任您的数据库:它快速并正确处理许多并发访问。如果它开始变慢,那么考虑一下你的查询,使用适当的索引等等。