序列化和对象

时间:2016-01-21 02:33:06

标签: java mysql performance serialization

我正在尝试将数据存储在MySQL中。使用VARCHAR类型的'成分'列,TEXT类型的'recipe'和TINYINT类型的'menu_id'。 应从JTextArea查看,调整和保存“成分”和“配方”。

每个对象引用都有一个不同的menu_id,用于调用方法。像 readCard(int menu_id)

这样的方法
public void adjustCard(){       
try{ 
String sset;
sset= "UPDATE eatingcard " + "SET menu_id = '"+ this.menu_id + "'," + "ingredients='" + this.ingredients + "'," + "recipe='" + this.recipe+ "' "+ "WHERE eatingcard.menu_id = " + this.menu_id;         

}catch{
 statement.executeUpdate(sset);      

             }catch(Exception e){
                 e.printStackTrace();
                 System.out.println("did not update");
             }                   

序列化对象是否有意义,如果您只想使用JButton更改它的成分和配方来保存/更新所做的更改? 或者我应该依赖MySQL来处理所有更改而不进行序列化? 在这种特殊情况下,我没有真正看到序列化的优势。

1 个答案:

答案 0 :(得分:1)

如果您不需要查询数据,您可以只保存原始表单中的数据,但我不建议将该表单作为序列化对象。使用序列化对象远比不太标准的可互操作格式(如JSON)便携。

无论如何,看看你的例子,你很可能希望在将来的某个时候查询这些数据(它可以很自然地适用于更多的结构)。例如搜索成分?食谱?您可能还希望将来以更灵活的方式更新数据。例如,在更标准化的结构中(比如表中每行的成分),您可以轻松添加新成分。在您的模型中,您需要将整个对象拉回来以更新成分。这样效率会低得多。

除此之外,更重要的是,将用户输入保存到数据库中是不安全。您在上面显示的代码会遇到SQL injection。您应该考虑使用预准备语句并绑定参数,以便正确转义输入。