[강의 정리][1편] 스프링 DB 1편 데이터 접근 핵심 원리 by 김영한

JDBC

  • 자바의 데이터베이스 표준 인터페이스

    • DB 벤더 회사의 jdbc 드라이버와 함께 어떤 DBMS와도 사용 가능

Sql Mapper

  • jdbcTemplate, Mybatis : sql 전달, 응답을 객체로 편리하게 변환 가능, jdbc의 반복 코드 제거

ORM

  • 코드만으로 가능하다

    • 객체지향적으로 작성할 수 있으며, 동적인 쿼리의 재활용에 있어서 편리하다.

  • Sql mapper에 비해 DB에 종속적이지 않다.

  • JPA같은 경우 기본적인 쿼리는 자동 생성해주기 때문에 반복적인 sql 제거가 가능하다.

     

 * 내부에서는 모두 Jdbc 기반이다.

 


 

DriverManager

  • Jdbc 연결 관리

  • 각각의 DB드라이버들에게 url 정보를 체크해서 처리할 수 있는지 확인한다.

 

Connection Pool

  • 요한 만큼 커넥션을 미리 확보 & 커넥션 재사용

  • 대표적인 커넥션 풀 - HikariCP

  • DataSource 인터페이스를 통해 커넥션풀에 직접 접근 없이 커넥션 획득이 가능하다

    • DriverManager에서 DataSource를 사용하려면 DriverManagerDataSource라는 구현 클래스를 통해야한다.

    • DriverManager은 커넥션을 위한 정보 파라미터 계속 넘겨줘야하고, DataSource는 getConnection로 커넥션을 가져온다.

      • 설정과 사용의 분리

         

 


 

트랜잭션

  • 데이터 베이스 작업단위

  • 원자성(all or nothing)

    • 모든 작업이 성공했을 때 commit하고, 하나라도 실패한다면 rollback

    • -> 데이터의 일관성 유지 가능 

  • 격리성

    • 격리수준

      • READ UNCOMMITED

      • READ COMMITTED 기본

      • REPEATABLE READ - update x, insert o

      • SERIALIZABLE - select for update

  • DB 세션이 트랜잭션을 관리

  • 자동 커밋은 각각의 쿼리가 트랜잭션 단위이기 때문에 원하는 단위로 묶을 수 없다

  • 트랜잭션의 범위를 지정한다는 것은 수동 커밋을 의미한다

 

 

댓글을 작성해보세요.

채널톡 아이콘