본문 바로가기

springboot/data access3

Spring의 트랜잭션 추상화로 JDBC 기반 트랜잭션 처리의 문제점 해결하기 트랜잭션은 왜 필요할까?● A가 B에게 10000원을 이체하는 경우를 생각해보자.START TRANSACTION;UPDATE member SET balance = balance - 10000 WHERE id = 'A';UPDATE member SET balance = balance + 10000 WHERE id = 'B';COMMIT; ● A의 잔고를 줄이고 B의 잔고를 늘리면 되므로 간단해 보인다.@Slf4j@RequiredArgsConstructorpublic class MemberService { private final MemberRepository memberRepository; public void accountTransfer(String fromId, String toId, int amo.. 2025. 4. 27.
커넥션 풀과 DataSource 데이터베이스와의 connection은 비용이 많이 드는 작업이다.매 요청마다 새 커넥션을 생성하면 성능 저하와 리소스 낭비가 발생한다.Connection Pool을 사용하면 미리 생성된 연결을 재사용하여 성능을 높이고 안정적인 트랜잭션 처리를 보장할 수 있다. 데이터베이스 connection을 획득할 때 다음과 같은 복잡한 과정을 거친다.1. 애플리케이션 로직은 DB 드라이버를 통해 커넥션을 조회 2. DB 드라이버는 DB와 TCP/IP 커넥션을 연결 3. DB 드라이버는 TCP/IP 커넥션이 연결되면 ID, PW와 기타 부가정보를 DB에 전달 4. DB는 ID, PW를 통해 내부 인증을 완료하고, 내부에 DB 세션을 생성 5. DB는 커넥션 생성이 완료되었다고 응답 6. DB 드라이버는 커넥션 객체를 .. 2025. 3. 22.
JDBC 기초부터 이해하기 SQL Mapper 또는 ORM을 사용해도 결국 모든 것은 JDBC 위에서 동작한다. JDBC의 필요성애플리케이션 서버와 DB의 일반적인 사용법은 다음과 같다.TCP/IP를 사용하여 커넥션 연결커넥션을 통해 DB에 맞는 SQL 전달DB는 전달받은 SQL을 수행하고 결과를 응답 문제는 각각의 데이터베이스마다 커넥션을 연결하는 방법, SQL 전달 방법, 결과를 응답 받는 방법이 모두 다르다데이터베이스를 변경하면 애플리케이션 서버에 개발된 데이터베이스 관련 코드도 전부 변경해야한다개발자가 각각의 데이터베이스마다 커넥션 연결, SQL 전달, 결과 응답 받는 방법을 새로 학습해야한다이 문제를 해결하기 위해 JDBC라는 자바 표준이 등장한다. JDBC 표준 인터페이스JDBC(Java Database Connecti.. 2025. 3. 10.