遇到讲师提供的以下示例代码,发现有些奇怪:在执行新的插入查询之前,必须清空数据库中的数据(我想避免数据库中的冗余数据)。
有什么方法可以避免这种通过哈希映射将数据插入数据库的round回方式?
public void saveCustomers() throws ClassNotFoundException, SQLException {
Statement statement = connection.createStatement();
String query = "delete from customer";
statement.executeUpdate(query);
Iterator customers = HRMS.Customers.entrySet().iterator();
while (customers.hasNext()) {
Customer customer;
Map.Entry customerMap = (Map.Entry) customers.next();
customer = (Customer) customerMap.getValue();
query = "insert into customer (memberId, name, nicn, gender, contact) "
+ "values ('" + customer.getMemberId() + "', '" + customer.getName() + "',"
+ " '" + customer.getId() + "', '" + customer.getGender().toString() + "', '" + customer.getContact() + "');";
statement.executeUpdate(query);
}
}
编辑:清除
HashMap
并将数据同时插入数据库(大概使用不同的线程)是否会有所改善? 最佳答案
您可以让另一个线程永远运行,该线程会定期检查缓存,并根据您可以配置的interval参数(例如,每10秒钟一次)将数据库与缓存同步。
但是要注意并发!
这是您要找的东西吗?