DB 트랜잭션 이론 완전 정복하기 - ACID, 동작 과정, 격리수준
·
CS
트랜잭션이란?데이터베이스에서 논리적 기능을 수행하기 위한 작업의 최소 단위여러 쿼리를 묶어 하나처럼 처리 트랜잭션 ACID 속성원자성(Atomicity)트랜잭션 내에서 실행한 작업들은 모두 성공하거나 모두 실패해야 한다 (하나의 작업처럼 처리)모두 성공 시 커밋, 하나라도 실패 시 롤백 일관성(Consistency)모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 한다트랜잭션이 진행되는 중간에 데이터베이스가 변경되더라도 변경된 데이터베이스로 트랜잭션이 진행되는게 아니라 처음에 트랜잭션을 진행하기 위해 참조한 데이터베이스로 진행됨→ 사용자는 일관성 있는 데이터를 볼 수 있게 됨 격리성(Isolation)동시에 실행되는 동작들이 서로에게 영향을 미치지 않도록 격리해야 한다ex. 동시에 같은 데이..
[LG CNS AM Inspire Camp 3기] 최종 프로젝트 10주차
·
카테고리 없음
10주차는 7회차 마지막 멘토링 때 나눴던 내용을 가볍게 풀어볼까 한다. 최종 발표 준비보다는, 프로젝트를 진행하면서 가장 많이 막혔고 고민했던 지점들을 중심으로 멘토님과 이야기를 나누며 정리하는 시간이었다. 사실 프로젝트를 진행하면서 어려웠던 점, 새로 배운 점 등이 매우 많은데 하나하나 다 깊게 공부하면서 글로 정리하고 싶지만 개발 마무리가 시급한 이유로 이번 글에서는 그 내용을 preview 느낌으로 정말 간단하게만 정리해두려고 한다. 1. 외부 API 연동, 특히 결제 API결제 API처럼 서버에서 또 다른 외부 서버를 호출하는 구조는 생각보다 고려할 게 많았다.• 네트워크 실패• 외부 API의 4xx / 5xx 응답• 우리가 컨트롤할 수 없는 영역특히 결제는 한 번 잘못되면 끝인 영역이라,요..
[LG CNS AM Inspire Camp 3기] 최종 프로젝트 8주차 - Controller 책임 줄이기: Swagger I/F 분리와 Argument Resolver 적용 고민
·
카테고리 없음
6회차 멘토링6회차는 개발 진척 상황과 코드 리뷰 등을 위주로 진행하였다.코드 리뷰에서는 다음과 같은 주요 피드백을 받을 수 있었다.• swagger I/F로 빼는 건 아주 좋아 보인다. • toParam, from 같은 건 AOP(Argument Resolver) 제안 이번 멘토링 일지에서는 이 피드백을 바탕으로왜 이 방식이 좋은 설계인지,Argument Resolver가 어떤 문제를 해결하는지,그리고 앞으로 어떻게 개선할 수 있을지를 정리해보려 한다. ⸻1. Swagger I/F로 분리한 구조에 대한 피드백1-1. 내가 했던 설계컨트롤러에서 Swagger 관련 어노테이션을실제 비즈니스 DTO와 분리해서 Swagger 전용 인터페이스(I/F) 로 관리했다.@Tag(name="매칭", descriptio..
@Transactional(readOnly=true)를 사용하는 이유
·
백엔드/Spring Boot
Q: @Transactional(readOnly=true) 를 사용하는 이유A: 조회만 수행하는 작업일 경우 readOnly 옵션을 true로 하여 성능 및 가독성을 향상시킬 수 있다 → 여기서 드는 의문🤔 : 그냥 @Transactional 을 안 쓰면 안 되나? 트랜잭션을 무분별하게 사용하는 것도 좋진 않다는데, 그럼에도 불구하고 ‘굳이’ 조회용 로직에 @Transactional(readOnly=true) 를 입히는 어떤 경우이고, 그 이유는 무엇일지 알아보자 ✅ @Transactional(readOnly=true) 사용 시 장점@Transactional(readOnly=true)는 단순히 읽기용임을 표시하는 것 이상의 역할을 한다. 영속성 컨텍스트 최적화 (성능 향상): JPA는 엔티티의..
[LG CNS AM Inspire Camp 3기] 최종 프로젝트 6~7주차 - 중간 발표
·
카테고리 없음
중간 발표 준비SMART 원칙 기반 구성1️⃣ Specific : 프로젝트 개요나 해결하고자하는 문제를 구체적으로 정의 ✅ 2️⃣ Measurable : 정량적 목표 지표 또는 성능 기준 정의 ✅ 3️⃣ Achievable : 현재 팀의 기술 수준-시간 데이터로 달성 가능한 목표인지 선언 ✅ 4️⃣ Relevant : 목표의 중요성, 문제 해결과 어떤 연관이 있는가 → MVP 기능과 연결 ✅ 5️⃣ Time-bound : 언제까지 무엇을 완성할 것인지 구체적 범위 제시 ✅ 프로젝트 주제 및 선정 배경주제 선정 배경 = pain point기존 유사 서비스가 지닌 한계서비스명, 주제 공개서비스 기획서비스 타겟서비스 목표MVP프로젝트 내용개발 환경 및 기술 스택멀티모듈 방식메시지 기반 통신ERD (Sync ..
[Spring Boot/JPA] 엔티티 매핑 초보자 가이드: 복합 키, 상속, 그리고 DDD 연관 관계 전략
·
백엔드/Spring Boot
스린이는 엔티티 설정하면서부터 모르는게 많아서 막히는 부분들이 좀 있었고, 관련해서 새로 알게 된 내용들을 조금 정리해보았다. 별건 아니지만 도움이 되는 사람이 있기를,, 바라면서 올려봄 엔티티 클래스 기본 권장 사항✅ @NoArgsConstructor(access = AccessLevel.*PROTECTED*) 를 기본적으로 붙일 것엔티티 생성을 막기 위함 → 엔티티는 보통 new로 생성하지 않는데, PROTECTED 로 하면 new로 외부에서 무분별하게 생성하지 못하게 막을 수 있음 외래키 설정하는 법1-1) 일대다 관계일 때 (연관 관계 O)@ManyToOne(fetch = FetchType.LAZY)@JoinColumn(nullable = false)private HoneyWalletEnt..
해안해
'분류 전체보기' 카테고리의 글 목록