[ Developer ]/Spring Framework
[Spring] 스프링 JDBC와 OJDBC의 차이
김현섭.
2016. 6. 14. 21:14
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 필요