출처 : http://www.javaservice.net/~java/bbs/read.cgi?m=devtip&b=servlet&c=r_p&n=968185187

최초작성일자: 2000/09/05 16:19:47
최근 수정일 : 2001.01.27
최근 수정일 : 2001.03.12(nested sql query issue)
최근 수정일 : 2001.03.13(transaction)
최근 수정일 : 2001.03.20(instance variables in JSP)
최근 수정일 : 2001.04.03(문맥수정)
최근 수정일 : 2002.02.06("close 할 땐 제대로..." 추가사항첨가)
최근 수정일 : 2002.02.25("transaction관련 추가")
최근 수정일 : 2002.06.11(PreparedStatement에 의한 ResultSet close 이슈)
최근 수정일 : 2002.06.18(PreparedStatement관련 추가)
최근 수정일 : 2002.12.30(Instance Variable 공유 1.2 추가)

다들 아실법한 단순한 얘깁니다만, 아직 많은 분들이 모르시는 것 같아 다시한번 정리합니다. 아래의 각각의 예제는 잘못 사용하고 계시는 전형적인 예들입니다.

1. 서블렛에서 instance variable 의 공유

1.1. 서블렛에서 instance variable 의 공유 - PrintWriter -

1.2. 서블렛에서 instance variable 의 공유

1.3. 서블렛에서 instance variable 의 공유 - DataBase Connection -

1.4. JSP에서 Instance Variable 공유

2. 하나의 Connection을 init()에서 미리 연결해 두고 사용하는 경우.

3. Exception 이 발생했을 때도 Connection 은 닫혀야 한다 !!

4. Connection 뿐만 아니라 Statement, ResultSet 도 반드시 닫혀야 한다 !!

4.1.

4.2.

4.3.

4.4.

4.5.

4.6.

4.6.1.

4.6.2.

4.7.

5. close() 를 할 땐 제대로 해야 한다!!

5.1. 다음과 같은 프로그램 형식을 생각할 수 있습니다.

5.1.1.

5.1.2.

5.2.

6. Nested (Statemet) SQL Query Issue !!

6.1.

7. executeUpdate() 의 결과를 비즈니스 로직에 맞게 적절히 활용하라.

7.1.

8. Transaction 처리를 할 땐 세심하게 해야 한다.

8.1. Non-XA JDBC Transaction(명시적인 java.sql.Connection/commit/rollback)

8.2.

8.3. 모든 경우의 수를 생각하라.

8.4.


8.5. XA JDBC Driver, J2EE JTS/JTA

NOTE: 위에서 설명한 하나하나가 제 입장에서 보면 너무나 가슴깊이 다가오는

NOTE: 위에서 사용한 코딩 샘플들은 JDBC Connection Pooling 은 전혀 고려치 않고

-------------------------------------------------------
  본 문서는 자유롭게 배포/복사 할 수 있으나 반드시
  이 문서의 저자에 대한 언급을 삭제하시면 안됩니다
================================================
  자바서비스넷 이원영
  E-mail: javaservice@hanmail.net
  PCS:010-6239-6498
================================================


CategoryJava

ZbmonWiki: JDBC코딩시고려사항 (2009-12-12 13:36:40에 zbmon가(이) 마지막으로 수정)