Spring JDBC

박찬미·2021년 3월 3일
0

Spring

목록 보기
2/6

DAO(Data Access Object)

실제로 DB에 접근하는 객체

  • 데이터 액세스 계층은 DAO 패턴을 적용해 비즈니스 로직과 데이터 액세스 로직을 분리하는 것이 원칙
  • Service와 DB를 연결하는 고리의 역할
  • DAO는 개발자가 직접 코딩
  • SQL을 사용해 DB에 접근한 후 적절한 CRUD API 제공(CRUD API)
  • 서비스 계층에 영향을 주지 않고 데이터 액세스 기술 변경 가능

DataSource

커넥션 풀링 지원
(커넥션 풀링 : 미리 정해진 갯수만큼의 DB 커넥션을 풀에 준비해두고, 어플리케이션이 요청할 때마다 풀에서 꺼내서 하나씩 할당해주고 다시 돌려받아서 풀에 넣는 식 기법)

  • 다중 사용자를 갖는 엔터프라이즈 시스템에서는 반드시 DB 커넥션 풀링 기능을 지원하는 DataSource를 사용해야 한다.
  • Spring에서는 DataSource를 공유 가능한 Spring Bean으로 등록해주어 사용할 수 있도록 해준다.

JDBC

모든 자바의 데이터 액세스 기술의 근간
엔티티 클래스와 어노테이션을 이용하는 최신 ORM 기술도 내부적으로는 DB와의 연동을 위해 JDBC를 이용

장점단점
안정적이고 유연DB에 따라 일관성 없는 정보로 Checked Exception 처리
친숙해 별도 학습없이 개발 가능Connection과 같은 공유 리소스를 제대로 릴리즈(반환) 해주지 않으며 시스템 자원 바닥나는 버그 발생 가능

Spring JDBC

JDBC의 장점과 단순성을 그대로 유지하면서 기존 JDBC의 단점을 극복
JDBC API에서 지원되지 않는 편리한 기능을 제공
간결한 형태의 API 사용법을 제공

  • Spring JDBC는 반복적으로 해야 하는 많은 작업들을 대신 해준다.
  • 사용할 때는 실행할 SQL과 바인딩 할 파라미터를 넘겨주거나, 쿼리 실행 결과를 어떤 객체에 넘겨 받을지를 지정만 하면 된다.
  • 사용하려면 먼저, DB 커넥션을 가져오는 DataSource를 Bean으로 등록해야 한다.
동작설명
Connection 열기와 닫기Connection과 관련된 모든 작업을 Spring JDBC가 필요한 시점에서 알아서 해준다.
진행 중에 예외가 발생했을 때도 열린 모든 Connection 객체를 닫아준다.
Statement 준비와 닫기SQL이 담긴 Statement를 실행하는 것도 Spring JDBC가 해준다.
Statement의 실행 결과는 다양한 형태로 가져올 수 있다.
Statement 실행SQL이 담긴 Statement를 실행하는 것도 Spring JDBC가 해준다.
Statement의 실행 결과는 다양한 형태로 가져올 수 있다.
ResultSet Loop 처리ResultSet에 담긴 쿼리 실행 결과가 한 건 이상이면 ResultSet 루프를 만들어서 반복해주는 것도 Spring JDBC가 해준다.
Exception 처리와 반환JDBC 작업 중 발생하는 모든 예외는 Spring JDBC 예외 변환기가 처리한다.
Checked Exception인 SQLException을 Runtime Exception인 DataAccessException 타입으로 변환해준다.
Transaction 처리(Commit, Rollback 등의 작업 단위)Spring JDBC를 사용하면 transaction과 관련된 모든 작업에 대해서 신경쓰지 않아도 된다.

JdbcTemplate 클래스

JDBC의 모든 기능을 최대한 활용할 수 있는 유연성을 제공하는 클래스

  • 제공 기능
    • 실행
      Insert나 Update 같이 DB의 데이터에 변경이 일어나는 쿼리를 수행하는 작업
    • 조회
      Select를 이용해 데이터를 조회하는 작업
    • 배치
      여러 개의 쿼리를 한 번에 수행해야 하는 작업

0개의 댓글