Spring/DB 5

스프링 DB 2편 - 11장. 스프링 트랜잭션 전파2 - 활용

트랜잭션 전파 활용1 - 예제 프로젝트 시작 비즈니스 요구사항 - 회원 등록 및 조회, - 변경 이력 추적위해 변경 이력을 DB LOG 테이블에 남기기 멤버 엔티티, 회원 리포지토리, 로그 엔티티, 로그 리포지토리, 멤버 서비스 등을 만들며 JPA를 사용한다. JPA의 구현체인 하이버네이트가 테이블을 자동으로 생성. 메모리 DB이기 때문에 모든 테스트가 완료된 이후에 DB는 사라진다. JPA를 통한 모든 데이터 변경에는 트랜잭션이 필요하다. 현재 코드에서는 서비스 계층에 트랜잭션이 없기 때문에 리포지토리에 트랜잭션이 있다. 트랜잭션 전파 활용2 - 커밋, 롤백 서비스 계층에 트랜잭션이 없을 때 - 커밋 서비스 계층에 트랜잭션이 없고 회원, 로그 리포지토리가 각각 트랜잭션을 가지고 있으며 이때 회원, 로그..

Spring/DB 2022.10.10

스프링 DB 2편 - 10장. 스프링 트랜잭션 전파1 - 기본

스프링 트랜잭션 전파1 - 커밋, 롤백 트랜잭션이 둘 이상 있을 때 어떻게 동작하는지 알아보고, 스프링이 제공하는 트랜잭션 전파라는 개념도 알아보자. 커밋, 롤백은 앞서 배운 내용과 비슷하다. 스프링 트랜잭션 전파2 - 트랜잭션 두 번 사용 트랜잭션이 각각 따로 사용되는 경우를 확인해보자. 트랜잭션 1이 완전히 끝나고나서 트랜잭션 2를 수행하는 예제에서 로그를 보면 트랜잭션1과 트랜잭션2가 같은 conn0 커넥션을 사용한다. 트랜잭션1은 conn0 커넥션을 모두 사용하고 커넥션풀에 반납까지 완료한 후에, 트랜잭션2가 conn0을 커넥션풀에서 획득한다. 즉, 둘은 완전히 다른 커넥션으로 인지하는 것이 맞다. 그렇다면 둘을 구분할 수 있는 방법은 무엇일까? 히카리 커넥션풀에서 커넥션을 획득할 경우 히카리 프..

Spring/DB 2022.10.10

스프링 DB 2편 -9장. 스프링 트랜잭션 이해

스프링 DB 2편 -9장. 스프링 트랜잭션 이해 (인프런 - 김영한 강사님) DB1에서 배운 트랜잭션에 대해서 복습하자. 1. 스프링 트랜잭션 추상화 각각의 데이터 접근 기술들은 트랜잭션을 처리하는 방식이 다르다. 예를 들어 JDBC 기술과 JPA 기술은 트랜잭션을 사용하는 코드 자체가 다르다. 즉, JDBC 기술을 사용하다가 JPA 기술로 변경하게 되면 트랜잭션을 사용하는 코드도 모두 함께 변경해야 한다. 이를 위해 스프링은 PlatformTransactionManager라는 인터페이스를 통해 추상화를 제공한다. 트랜잭션은 시작(획득), 커밋, 롤백으로 단순하게 추상화할 수 있고 데이터 접근 기술에 대한 트랜잭션 매니저의 구현체도 제공한다. 우리는 구현체를 스프링 빈으로 등록하고 주입 받아서 사용하기만..

Spring/DB 2022.10.10

스프링 DB 1편 -4장. 스프링과 문제 해결 - 트랜잭션

스프링 DB 1편 -4장. 스프링과 문제 해결 - 트랜잭션 (인프런 - 김영한 강사님) 애플리케이션 구조는 주로 다음과 같다. 프레젠테이션 계층 - @Controller. UI 관련 처리. 웹 요청 응답, 사용자 요청 검증 - 주 사용 기술 : 서블릿과 HTTP 같은 웹기술, 스프링 MVC 사용 서비스 계층 - @Service. 비즈니스 로직 담당 - 주 사용 기술 : 가급적 특정 기술에 의존하지 않고 순수 자바코드로 작성함 데이터 접근 계층 - @Repository. 실제 데이터베이스에 접근하는 코드 - 주 사용 기술 : JDBC, JPA, File, Redis, Mongo 가장 중요한 계층은 핵심 비즈니스 로직이 들어있는 서비스 계층이다. 시간이 흘러서 UI와 관련된 부분이 변하고 데이터 저장 기술을..

Spring/DB 2022.09.19

스프링 DB 1편 -3장. 트랜잭션 이해

스프링 DB 1편 -3장. 트랜잭션 이해 (인프런 - 김영한 강사님) 트랜잭션이란? 트랜잭션(번역하면 거래 라는 뜻이다.) 이란, 데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위를 뜻한다. 데이터베이스의 상태를 변화시킨다는 것은 무얼 의미하는 것일까? 간단하게 말해서 아래의 질의어(SQL)를 이용하여 데이터베이스를 접근 하는 것을 의미한다. SELECT INSERT DELETE UPDATE 작업의 단위는 질의어 한문장이 아니다. 작업단위는 많은 질의어 명령문들을 사람이 정하는 기준에 따라 정하는 것을 의미한다. (우리가 수업시간에 배웠던 예제에 접목하자면, A가 10000원, B가 10000원 있을 때, B가 A에게 2000원 송금하면 우리는 A에 +2000원, B에 -2000원 해줘야 한다...

Spring/DB 2022.09.19