난 왜 지금까지.. dml에 대해 매개변수로 do를 전달햇을때.. pk등 키값을 제대로 처리를 안햇었을까?


예를 들어..  xxDAO클래스의  int update(DO do) 메서드라면,.. (insert도 포함)


지금까지 내경운.. sql 쿼리를 "update 테이블 이름 set 칼럼1 = do.칼럼1, 칼럼2 = do.칼럼2

요렇게 했었는데.. 난 바보였다.. 요런 쿼리면.. 모든 로우에 대해 해당 값으로 덮어쓰게 된다.


이런 메서드는 updateAll() 이런 식으로 명명했어야 했다.


update() 라면..

update 테이블 이름 set 칼럼1(pk아님) = do.칼럼1, 칼럼2 = do.칼럼2 ... where 테이블 칼럼.pk = do.pk 

요렇게 했어야 했다... 


난 뭘한건가?????????????????????


오버 로딩으로 중복 코드 줄이겠다는 마음만 앞서서.. (쿼리 구문 ? 에 입력값들 매핑 하는 로직)

update, 와 select를 묶어버리고;; (이것도 위의 삽질처럼.. updateAll과 update 구분못함.. 물론 delete , deleteAll 도 구분 못함)

insert와 delete를 묶었을거다;; 


난 진짜 바보다;;;


db의 테이블.. 그리고 pk.. where 조건절과 서비스 메서드의 조건(selectById...) 구분을 못했었다. 


dml이 왜 dml이냐!!!!! dql 왜 dql이냐??? 왜 두가지 문장이 구분되는 것인지..  좀 깨닫자!!!!!!

select란 dql은 ... 전체 집합에서 조건을 찾는 문법이다.;;; 아.. 그래도 늦게나마 깨달았다;;;

by givingsheart 2014. 1. 7. 14:50