なんとな~くしあわせ?の日記

「そしてそれゆえ、知識そのものが力である」 (Nam et ipsa scientia potestas est.) 〜 フランシス・ベーコン

スニペットコード

Javaなんよ

非効率的な気がするが…
画面上のBeanのリストとDBから取得したDtoのリストを比べて、Beanにキー値が入っていれば更新を試み、なければインサートするという処理。

private void saveDB () {

    // ページにあるデータ
    pgDataList;
    // データベースにあるデータ
    dbDataList;

    for ( pgData : pgDataList ) {
	if ( pgData.getKey() != null ) {
	    // key
	    String  key = pgData.getKey();
	    boolean insert = true;

	    // ページから送られた情報にDBの主キーがある
	    Iterator it = dbDataList.iterator();
	    while (it.hasNext()) {
		if ( it.getKey().equals(key) ) {
		    // 更新かける
		    insert = false;
		    DBUtil.update(key, pgData);
		    it.remove();
		    break;
		}
	    }

	    if ( insert ) {
		DBUtil.insert(pgData);
	    }

	} else {
	    // ページから送られた情報にDBの主キーなし
	    DBUtil.insert(pgData);
	}
    }

    // 更新されなかったデータを削除
    for ( dbData : dbDataList ) {
	dbData.delete();
    }
}