我正在尝试用Java编写一本Cookbook。我用标题,图片,注释等属性创建了一个Object'Recipe',并将所有食谱放在ArrayList中。到目前为止,我只是序列化了ArrayList,以便以后可以轻松地将它加载到我的程序中。正如您可能认为的那样,如果有数百个食谱并且每个食谱都有图片,那么序列化需要相当长的时间。所以我想到了HSQLDB数据库,但对我来说有两个问题。
答案 0 :(得分:0)
可以将图像存储在VARBINARY或BLOB类型的列中。 VARBINARY类型适用于高达几千字节的低分辨率图像。如果图像通常较大,则BLOB更合适。
您可以非常有效地按需检索每个食谱。
如果你正在做的只是显示配方,你可能不需要配方对象,配方以简单的形式只是数据库表中的一行。您可以将行检索为ResultSet,并使用getXXX(n)方法获取要显示的每个属性。
使用数据库的另一个好处是可以存储每种食谱的成分或属性列表,如卡路里,并能够根据这些属性搜索和显示食谱列表。
每种食谱都可以含有多种成分。所有可能的成分都可以存储在第二个表中,每个成分对应一行,如橄榄油,橄榄油,生菜,西红柿等。每个配方中每种成分的使用,第三个表用于一行。例如,特定的沙拉在这张桌子上有一排用于番茄,一排用于橄榄油。
ingredients
ingredient_id name
6 olive oil
... ...
26 tomato
ingredient_use
recipe_id, ingredient_id
12 26
12 6
... ...
您使用
等连接SELECT * FROM ingredients JOIN ingredient_use USING (ingredient_id) WHERE recipe_id = 12