[강의 정리][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 세션이 트랜잭션을 관리
자동 커밋은 각각의 쿼리가 트랜잭션 단위이기 때문에 원하는 단위로 묶을 수 없다
트랜잭션의 범위를 지정한다는 것은 수동 커밋을 의미한다
댓글을 작성해보세요.