Spring/Spring Data3 spring transaction [TOC] 문제점들 애플리케이션 구조 역할에 따라 3가지 계층으로 나눔 @Controller : UI 관련 처리 프레젠테이션 계층 웹 요청과 응답 사용자 요청을 검증 주 사용 기술 : 서블릿과 HTTP 같은 웹 기술, 스프링 MVC @Service 비즈니스 로직 가급적 특정 기술에 의존 x 순수 자바 코드로 작성 @Repository 데이터 접근 계층` 주 사용 기술.. jDBC JPA Redis Mongo... 순수한 서비스 계층 핵심 비즈니스 로직이 들어가있음 비즈니스 로직은 최대한 변경 없이 유지되어야 한다.. 서비스 계층은 특정 기술에 종속적이지 않게 개발해야 함 프레젠테이션 계층은 UI와 관련된 웹, 서블릿, HTTP와 관련된 부분을 담당해줌 서비스 계층을 이런 UI와 관련된 기술로부터 보호해줌.. Spring/Spring Data 2023. 3. 6. 트랜잭션 트랜잭션 - 개념 이해 데이터를 DB에 저장하는 이유? DB는 트랜잭션을 지원 하나의 거래를 안전하게 처리하도록 보장해주는 것 e. g 5000원 계좌 이해 A의 잔고를 5000원 감소 B의 잔고를 5000원 증가 2가지 가업이 합쳐져서 하나의 작업처럼 동작해야 함 1번은 성공했는데 2번은 실패한다? 심각... 커밋(commit) : 모든 작업이 성공해서 데이터베이스에 정상 반영하는 것 롤백(rollback) : 작업 중 하나라도 실패해서 거래 이전으로 되돌리는 것 ACID 원자성 트랜잭션 내에서 실행한 작업들은 모두 성공 하거나 모두 실패해야 함 일관성 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 함 격리성 동시에 실행되는 트랜잭션들이 서로에게 영향을 미치지 않도록 격리 트랜잭션 간에 격리.. Spring/Spring Data 2023. 3. 6. 커넥션 풀 DataSource 커넥션을 획득하는 다양한 방법 애플리케이션 로직 DriverManager를 통해서 만드냐.. 풀에서 가져오냐.. DriverManager JDBC 개발한것처럼.. 신규 커넥션 생성 생성할 때마다 가져옴 커넥션 풀로 변경 시? 애플리케이션 로직에서 코드를 바꿔야 함 커넥션을 획득하는 방법을 추상화 javax.sql.DataSource 커넥션을 획득하는 방법을 추상화 하는 인터페이스 핵심 기능 : 커넥션 조회 하나 public interface DataSource { Connection getConnection() throws SQLException; } 정리 대부분의 커넧ㄴ 풀은 DataSource 인터페이스를 이미 구현해둠 코드에 직접 의존 x DataSource 인터페이스에만 의존하.. Spring/Spring Data 2023. 3. 6. 이전 1 다음