728x90 반응형 분류 전체보기582 [Spring] 트랜잭션 추상화와 동기화 (스프링으로 트랜잭션 문제점 해결) 애플리케이션은 다양한 구조로 구성될 수 있지만, 대표적으로 역할에 따라 3가지 계층으로 나눠볼 수 있다 1) 프레젠테이션 계층 ① UI와 관련된 처리를 담당 ② 웹 요청과 응답 ③ 사용자 요청을 검증함 ④ 주 사용 기술은 서블릿과 HTTP 같은 웹 기술, 스프릥 MVC 2) 서비스 계층 ① 비즈니스 로직을 담당 ② 주 사용 기술은 가급적 특정 기술에 의존하지 않고, 순수 자바 코드로 작성 3) 데이터 접근 계층 ① 실제 DB에 접근하는 코드 ② 주 사용 기술은 JDBC, JPA, FIle , Redis, Mongo... 등등 가장 중요한 계층은 서비스 계층왜 서비스 계층이 가장 중요할까? 핵심 비즈니스 로직이 들어있는 계층이기 때문이다.UI(웹)와 관련된 부분이 트랜드에 맞게 변하게 되기 마련이고, .. 2025. 1. 3. [Spring] 트랜잭션 개념 적용 예제 이전 포스팅에서 DB 트랜잭션과 락에 대해서 살펴봤다. DB 개념을 적용하여 트랜잭션을 어플리케이션에서 어떻게 적용하는지 한번 살펴보자. DB 트랜잭션을 사용해서 계좌이체 같이 원자성이 중요한 비즈니스 로직을 어떻게 구현하는지 알아보자 MemberServiceV1.javapackage hello.jdbc.service;import hello.jdbc.domain.Member;import hello.jdbc.repository.MemberRepositoryV1;import lombok.RequiredArgsConstructor;import java.sql.SQLException;@RequiredArgsConstructorpublic class MemberServiceV1 { private final .. 2024. 12. 23. [Spring] DB Lock DB 락 - 개념 이해 세션1이 트랜잭션을 시작하고 데이터를 수정하는 동안 아직 커밋을 수행하지 않았는데, 세션2에서 동시에 같은 데이터를 수정하게 되면 여러가지 문제가 발생한다. 바로 트랜잭션의 원자성이 깨지는 것이다.여기에 더해서 세션1이 중간에 롤백을 하게 되면 세션2는 잘못된 데이터를 수정하는 문제가 발생한다. 이런 문제를 방지하려면, 세션이 트랜잭션을 시작하고 데이터를 수정하는 동안에는 커밋이나 롤백 전까지 다른 세션에 서 해당 데이터를 수정할 수 없게 막아야 한다. 세션1은 memberA 의 금액을 500원으로 변경하고 싶고, 세션2는 같은 memberA 의 금액을 1000원으로 변경하고 싶다.데이터베이스는 이런 문제를 해결하기 위해 락(Lock)이라는 개념을 제공한다.다음 예시를 통해 동시.. 2024. 12. 18. [Spring] 트랜잭션 이해 - 트랜잭션 개념 트랜잭션 - 개념 이해 데이터를 저장할 때 단순히 파일에 저장해도 되는데, 데이터베이스에 저장하는 이유는 무엇일까?여러가지 이유가 있지만, 가장 대표적인 이유는 바로 데이터베이스는 트랜잭션이라는 개념을 지원하기 때문이다. 트랜잭션을 이름 그대로 번역하면 거래라는 뜻이다. 이것을 쉽게 풀어서 이야기하면,데이터베이스에서 트랜잭션은 하나의 거래를 안전하게 처리하도록 보장해주는 것을 뜻한다.그런데 하나의 거래를 안전하게 처리하려면 생각보다 고려 해야 할 점이 많다.예를 들어서 A의 5000원을 B에게 계좌이체한다고 생각해보자. A의 잔고를 5000원 감소하고, B의 잔고를 5000원 증가해야한다. 5000원 계좌이체1. A의 잔고를 5000원 감소2. B의 잔고를 5000원 증가 계좌이체라는 거래는 이렇게 2.. 2024. 12. 17. [Spring] DataSource 적용 예제(DriverManager & HikariDataSource) ※ 이전 포스팅https://drcode-devblog.tistory.com/583 [Spring] 커넥션 풀과 데이터 소스 개념데이터베이스 커넥션을 매번 획득 데이터베이스 커넥션을 획득할 때는 다음과 같은 복잡한 과정을 거친다. 1) 애플리케이션 로직은 DB 드라입러를 통해 커넥션을 조회한다. 2) DB 드라이버는 DB와drcode-devblog.tistory.com DataSource 를 실제로 적용한 내용을 살펴보면 아래와 같다. ConnectionTest - 드라이버 매니저 package hello.jdbc.connection;import lombok.extern.slf4j.Slf4j;import org.junit.jupiter.api.Test;import java.sql.Connection;i.. 2024. 12. 17. [서버/개념] Web Server와 WAS server의 차이 웹 서버와 WAS 서버 차이 웹 서버와 WAS 서버는 명칭만 보면 서로 비슷하고 그게 그거 같지만 역할은 확연히 다르다. 1) Web Server웹 서버는 디스크에서 파일을 로드하고 이를 네트워크를 통해 사용자의 웹 브라우저에 제공함으로써웹 브라우저에 정적 컨텐츠를 제공하는 서버이다. 웹 서버의 주요 기능① 정적 컨텐츠 제공 : 웹 서버는 HTML 페이지, 이미지, 비디오 및 기타 파일과 같은 정적 컨텐츠를 클라이언트의 브라우저에 전달한다.② HTTP 프로토콜 처리 : 웹 서버는 HTTP 요청과 응답을 처리하여 서버와 클라이언트 간의 데이터 교환을 관리한다.③ 기본 요청 처리 : GET 및 POST와 같은 기본 클라이언트 요청을 처리한다.④ 경량 : 웹 서버는 일반적으로 정적 컨텐츠를 빠르게 제공하는.. 2024. 7. 29. 이전 1 2 3 4 ··· 97 다음 728x90 반응형