본문 바로가기
[ Developer ]/Spring Framework

[Spring] 스프링 JDBC와 OJDBC의 차이

by 김현섭. 2016. 6. 14.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
OJDBC와 Spring JDBC의 차이
  • OJDBC
    • Connection, Prepared, Statement, Result Set 등 Open / Close 작성 필요함
      • Close 하지 않을 경우 메모리 누수 문제
    • OJDBC의 Statement를 사용함으로써 SQL Injection 위험이 따름
    • 쿼리가 지저분해지며 추상화가 어려움
    • 추상화가 어려우므로 수정 / 확장에 큰 어려움 발생
    • Connection-Pool 지원하지 않아 쿼리 수행 속도가 떨어짐
      • Connection을 필요할 때 마다 일일이 생성
      • 하나의 Connection을 사용한다면 동시성 문제 발생
        • 병목 현상이 지속적 발생
    • 업무 단위의 Transaction이 지원되지 않음
      • 단일 쿼리의 Transaction은 지원
        • ex) 출금 혹은 송금 등의 Transaction
      • 업무 단위의 Transaction 지원하지 않음
        • ex) 출금 이체 (출금 후 이체) 등의 Transaction
     
  • Spring JDBC
    • Connection, Prepared, Statement, Result Set 등 Open / Close 일일이 작성하지 않음
    • OJDBC의 PrepareStatement를 사용함으로써 SQL Injection 위험 없음
    • 높은 추상화 수준으로 쿼리가 깔끔해지고 그로 인해 유지보수의 이점이 발생
    • 높은 추상화로 수정 / 확장 편리
    • Connection-Pool 지원하기에 쿼리 속도 빠름
    • 동시성 문제도 발생할 확률 줄어듬
    • 간헐적 병목현상 발생할 수 있음
    • 업무 단위의 Transaction 지원
      • Connection을 분리함으로 써 업무 단위의 Transaction이 가능
      • Spring-aop 필요