DB프로그래밍의 교훈DB프로그래밍의 교훈

Posted at 2011. 5. 7. 19:33 | Posted in Computer Science/DB시스템및프로그래밍

JDK 1.6.0_24 + ojdbc14.jar 환경에서 데이터베이스 프로그래밍을 하면서 여러 가지 문제점을 알 수 있었다. 이 문제점을 알기 위해 너무 많은 시간을 소비하였다. 특히 자바 플랫폼 기반의 데이터베이스 프로그래밍과 관련된 서적이 거의 없기 때문에(또한 모든 것을 책에서 다룰 수 없다.) 이러한 문제가 발생하리라 생각하지 못하였다.

1. SELECT, INSERT, UPDATE, DELETE 문장은 executeQuery, executeUpdate 메소드로 받을 수 있다.
처음 생각한 것은 무조건 데이터를 조회할 때는 executeQuery 메소드를 사용하고 데이터의 변경을 가할 때는 executeUpdate 메소드를 사용할 것이라 생각하였는데 INSERT 문장이라도 Static SQL(Compile Time 완성)이라면 executeQuery 메소드를 사용할 수 있다.

2. 커밋의 중요성
하나의 컴퓨터에서 오라클 서버를 동작시키고 클라이언트를 실행시키며 프로그래밍을 하였다. 대량의 SQL 문장이 아닌 단독 문장으로 테스트를 수행하며 프로그래밍하였다. 문제는 클라이언트로 데이터를 삽입하고 DELETE 문장을 이용하고 다시 클라이언트로 데이터를 삽입하면 위의 화면처럼 무한 대기 상태에 진입한다. 정말 이 문제때문에 고생하였다. 처음 내가 생각한 것은 네트워크 상에서 세션 성립 문제일 것이라 생각을 하였다. 대부분 close 메소드로 종료하지 않았고 비정상적인 종료로 인해 무한 대기 상태에 진입하는 것이라 생각하였다. 하지만 알고 보니 DELETE 문장을 수행하고 다시 데이터베이스에 접속하여 SELECT 문장을 수행하니 지워지지 않고 그대로 있었다. 자동 커밋 되리라 생각했는데 자동 커밋이 꺼져 있었다. 참으로 황당하였다. 아무튼 변경을 가하고 나서는 COMMIT을 반드시 수행하여야 한다.

'Computer Science > DB시스템및프로그래밍' 카테고리의 다른 글

Fat Jar Eclipse Plug-In  (0) 2011.05.07
SQL Injector  (2) 2011.05.03
Mass SQL Injector  (0) 2011.05.03
DB시스템및프로그래밍 프로젝트 첫 모임  (2) 2011.04.08
XML 관련 문제 풀이 정리  (0) 2011.04.04
//