当我在J2EE中开发web应用程序时,我必须非常小心数据库调用。
我正在将图像存储在数据库(BLOB)中。
为了访问这些图像,我创建了一个servlet文件。
我将id作为GET
方法传递给该文件。
为了显示图像,我需要调用servlet文件。
但是作为另一个数据库调用的servlet文件,我最担心的是。
例如:
如果在那个特定的jsp文件中,我想显示3行,我将调用1个来显示这些行,并调用另外3个来显示那些图像。
我有两个选项
- 创建一个全局变量,并在jsp和servlet中访问该变量
- 将数据库对象传递给会话变量,而不是创建全局变量
但对我来说,两者都不好。请提出一些建议。
如果你担心数据库的负载,你可能应该避免在其中存储图像。相反,将图像存储在磁盘上,并将其路径存储在数据库中。
这样,当您需要在一个页面中显示三个图像时,您可以执行一个查询来获取这三个图像的路径,并生成一个包含这三个路径的HTML页面。
如果您别无选择,只能将图像作为Blob存储在数据库中,并且您已经对应用程序进行了负载测试,并表明从数据库中获取图像会导致严重的性能问题,那么可以考虑使用一些应用程序缓存(如EHCache)来从数据库中删除负载。你也可以同时从数据库中获取这三个图像,并将它们存储在会话中,但你必须找到清理会话的方法,否则你的应用程序的内存会攀升得很快。
而不是多次访问数据库。只需编写一个查询,即可获得所需的所有行或所需的图像。并使用ArrayList显示所有图像行这将是一个简单得多的方法:)