트랜잭션이 너무 어렵다

과제 내용 지난번 포스트랑 동일한 맥락이다. 상품을 주문하는데, 주문이 완료되면 회원의 위시리스트에서 해당 상품 옵션을 제거하는 코드다. 작성했던 코드 사실 위시리스트에서 지우는건 실패하더라도 주문하기라는 기능에 크게 영향을 미치지 않는다. 그래서 AFTER_COM

2025년 9월 4일
·
0개의 댓글
·

EventListener와 TransactionalEventListener

상품을 주문하는 코드를 작성한다. 이 때 상품이 주문되면 저장되어있던 수량이 차감되고, 만약 주문하는 수량이 저장된 수량보다 크다면 주문에 실패하게 된다.상품을 주문했을때 option에 저장되어 있는 수량을 차감하는 코드다.이 과제를 해결하는 데에 있어서 수량은 중요한

2025년 9월 4일
·
0개의 댓글
·
post-thumbnail

영속성 관리 - 1

데이터베이스를 하나만 사용하는 애플리케이션은 일반적으로 EntityManagerFactory를 하나만 생성합니다.Persistence.createEntityManagerFactory("example");를 호출하게 되면 META-INF/persistence.xml에 있

2025년 7월 14일
·
0개의 댓글
·

WEEK 8-2: CI/CD

개발자가 코드를 자주 통합하고 자동 빌드 및 테스트를 통해 코드 품질을 유지하며 문제를 조기에 발견하는 과정을 의미합니다.CI 결과물을 자동으로 스테이징 혹은 운영 환경에 배포하는 과정입니다. 승인 없이 바로 배포하는 것은 Continuous Deployment라고 부

2025년 6월 1일
·
0개의 댓글
·

WEEK 8-1: Docker

Docker는 어플리케이션을 쉽고 빠르게 만들고, 테스트하며, 배포할 수 있는 소프트웨어 플랫폼입니다. 컨테이너라는 개념으로 가볍고 이식성 높은 패키지로 어플리케이션을 실행시킬 수 있습니다.docker의 image는 실행에 필요한 모든 것들(코드, 라이브러리 등)을 포

2025년 6월 1일
·
0개의 댓글
·

WEEK 7-6: Git

여러 명이 동시에 같은 파일의 같은 부분을 수정하면, Git은 어떤 변경을 적용해야 할 지 스스로 결정하지 못해 충돌이 발생하게 됩니다.PR 과정 뿐만 아니라, git pull 등으로 코드를 병합할 때에도 발생할 수 있습니다.충돌이 발생하면 Git은 CONFLICT 메

2025년 5월 25일
·
0개의 댓글
·

WEEK 7-5: Git

여러 명이 협업을 하거나, 프로젝트의 규모가 커질 때 코드의 안정성과 효율성을 높이기 위해 브랜치를 어떻게 나누고 merge를 하는 지에 대한 정책입니다.Dev: 새로운 기능 개발과 버그 수정 등 모든 작업의 기반 브랜치 입니다. 실험적인 코드가 포함될 수 있고 안정적

2025년 5월 25일
·
0개의 댓글
·

WEEK 7-4: Git

이슈는 단순한 버그 신고 뿐만이 아니라, 작업 계획, 토론, 진행 상황 추적 등 모든 개발과 관련된 논의를 기록하는 핵심 도구입니다.문제를 세분화해 프로젝트 구조를 만들고, 팀원 간 빠른 커뮤니케이션과 명확한 작업 분배를 가능하게 합니다. 이슈를 등록할 때에는 제목,

2025년 5월 25일
·
0개의 댓글
·

WEEK 7-4: Git

Github 저장소 생성: github 로그인 후 Create repository 버튼을 클릭하여 새로운 저장소를 만듭니다. 로컬 저장소와 원격 저장소 연동: 이미 로컬에서 git init, add, commit을 마친 상태라면 git remote add origin

2025년 5월 25일
·
0개의 댓글
·

WEEK 7-3: Git

제목은 50자 이내본문은 변경의 이유와 내용을 담아 72자 이내꼬리말(이슈 트래커, BREAKING CHANGE 등)으로 구성됩니다.\--soft: 커밋만 되돌립니다. 스테이징의 상태는 그대로 둡니다.\--mixed: 커밋과 스테이징 모두를 되돌리고 작업 디렉토리는 유

2025년 5월 25일
·
0개의 댓글
·

WEEK 7-2: 리눅스 명령어

전 세계적으로 사용되는 오픈소스 운영체제로, 서버, 개발환경, IoT 기기 등 다양한 곳에서 활용이 됩니다. 무료로 사용할 수 있고 사용자가 직접 커스터마이즈 할 수 있으며, 다양한 배포판이 존재합니다.Unix 철학과 구조를 계승한 OS입니다. Unix와 비슷한 기능과

2025년 5월 25일
·
0개의 댓글
·

WEEK 7-1: git

코드와 파일의 변경 이력을 저장 및 관리하는 분산형 버전 관리 시스템입니다. 여러 사람이 동시에 작업할 때 수정 내역을 쉽게 추적할 수 있고 협업할 수 있게 도와줍니다.Git으로 관리한 코드를 인터넷에 저장 및 공유할 수 있는 웹 서비스입니다. 협업과 공개 프로젝트 관

2025년 5월 25일
·
0개의 댓글
·

WEEK 6-14: Spring Data JPA

Spring Boot에서는 JPA의 설정(EntityManagerFactory, TransactionManager 등)을 자동으로 구성합니다. DB 연결 정보는 application.properties(또는 application.yml)에서 간단히 지정하며 @Persi

2025년 5월 18일
·
0개의 댓글
·

WEEK 6-13: Spring Entity

클래스에 @Entity를 선언하면 JPA가 관리하는 엔티티로 인식하게 됩니다.필수 조건PK(@Id) 필드가 반드시 존재해야 함기본 생성자 필요final, enum, interface, inner class에는 사용이 불가능필드에 final 사용 불가능name 속성으로

2025년 5월 18일
·
0개의 댓글
·

WEEK 6-12: Spring 영속성 컨텍스트

JPA에서 엔티티 객체를 영구적으로 저장하고 관리하는 논리적인 메모리 공간입니다. 쉽게 말하자면, application과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스의 역할을 합니다.엔티티를 저장, 조회, 삭제 하는 등의 모든 작업은 먼저 영속성 컨텍스트를

2025년 5월 18일
·
0개의 댓글
·

WEEK 6-11: Spring JPA

JPA(Java Persistence API)는 자바 객체와 관계형 데이터베이스 간의 패러다임 불일치 문제를 해결하기 위해 만들어진 Java ORM(Object-Relational Mapping) 기술 표준입니다.인터페이스만 제공하며, 실제 구현체로는 Hibernate

2025년 5월 18일
·
0개의 댓글
·

WEEK 6-10: Spring Servlet Filter

공통 관심사라는 것은, 여러 위치에서 반복적으로 사용되는 부가 기능(인증, 로깅, 보안 등)을 의미합니다. 비즈니스 로직과 별개로 동작하고 코드 중복과 유지보수 문제를 일으킬 수 있습니다.대표적인 예시로는, 로그인이 되어있는 유저만 특정 API를 사용 가능한 것이 있습

2025년 5월 18일
·
0개의 댓글
·

WEEK 6-9: Spring JWT

Token은 Web Application이나 API에서 인증(Authentication)과 인가(Authorization)에 사용되는 디지털 문자열입니다. 사용자의 신원과 권한을 증명하고, 요청의 유효성을 검증하는 역할을 합니다. 인증된 사용자임을 확인하기 위한 고유한

2025년 5월 18일
·
0개의 댓글
·

WEEK 6-8: Spring Session

Cookie를 사용한 인증 및 인가 방식은 보안 문제가 많습니다. 중요한 정보를 클라이언트에 저장하면, 변조 또는 탈취 등 보안 문제가 발생합니다. 그렇기 때문에, 중요한 정보는 서버 측에 저장하고, 클라이언트와는 예측이 불가능한 임의의 값으로 연결하는 방식이 필요합니

2025년 5월 18일
·
0개의 댓글
·

WEEK 6-7: Spring Cookie

Cookie는 웹 서버가 사용자의 브라우저에 저장하는 작은 데이터 조각입니다. 주로 사용자의 로그인 상태, 세션 유지, 사용자 맞춤 설정, 트래킹 등의 상태 정보를 저장하며, HTTP의 stateless 한계를 보완합니다.HTTP는 Stateless와 Connectio

2025년 5월 18일
·
0개의 댓글
·