在我的web应用程序中,我要将数据库中的相同数据带入webapplicatio,这需要花费大量时间。 我所做的是,我将数据放入HashMap中。这样我就不必每次都把它带到web应用程序中。但最大的问题是,所有用户都将使用相同的数据进行操作。 我的第一个问题是:将数据库带来的数据保存在HashMap中是否正确,所以我不必每次都从DB中查询它? 我的第二个问题是,如果我可以使用HashMap来保存数据,我将对HashMap中的数据进行深度复制或克隆,因此每个用户都拥有原始数据的副本。正确?
我要克隆的对象是一个传输对象,它引用了其他Object和HashMaps。 过程是这样的:首先从数据库中获取数据,创建类并将所有类放入传输对象中,然后将该传输对象放入散列映射中。下次,从hashmap中提取数据。
感谢您的帮助。 编辑:来自数据库的数据创建一个在线表单,并具有名称,地址和性别等默认值...所有用户必须编辑表单以用于自己的目的。这就是每个用户必须拥有自己的副本才能对其进行操作。
答案 0 :(得分:4)
深度克隆的一种非常简单的方法是序列化/反序列化对象。只有当hashmap中的所有键/值都实现java.io.Serializable
时,这才会起作用。
例如:
public <T extends Serializable> T deepClone(T o) {
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(byteOut);
out.writeObject(o);
out.flush();
ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(byteOut.toByteArray());
return o.getClass().cast(in.readObject());
}