Spring @Transactional 사용 시 주의사항
@Transactional이란? @Transactional은 Spring에서 트랜잭션을 선언적으로 관리할 수 있게 해주는 어노테이션입니다. 클래스 또는 메서드에 붙이게 되면 해당 범위 내에서 실행되는 DB 작업들이 하나의 트랜잭션으로 묶이게 됩니다. @Transactional public void addData(String data) { re...
@Transactional이란? @Transactional은 Spring에서 트랜잭션을 선언적으로 관리할 수 있게 해주는 어노테이션입니다. 클래스 또는 메서드에 붙이게 되면 해당 범위 내에서 실행되는 DB 작업들이 하나의 트랜잭션으로 묶이게 됩니다. @Transactional public void addData(String data) { re...
전파 타입(Propagation) 요약 전파 타입 기존 트랜잭션 있음 기존 트랜잭션 없음 REQUIRED 기존 트랜잭션 참여 새 트랜잭션 생성 REQUIRES_NEW 기존 일시 중지 + 새 트랜잭션 생성...
OSIV 활성화 시 나타나는 메시지 spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this w...
N+1 문제란? N+1 문제는 데이터를 1건 조회했을 때, 연관된 데이터를 가져오기 위해 N번의 쿼리가 추가로 실행되는 현상입니다. N+1 문제 발생 예시 팀(Team)이 10개 있다고 가정하고 팀(Team) 목록을 조회한 뒤, 각 팀의 멤버(Member)를 조회하면 총 11번(1+10(N))의 쿼리가 발생합니다. 왜 11번의 쿼리가 발생하게 되는...
앞서 정리한 Database Replication 사용하기(with MySQL) 글에서 살펴본 것처럼, Spring Boot 환경에서도 동일하게 적용할 수 있습니다. Master/Source와 Slave/Replica의 명칭 관련해서는 설명의 편의를 위해 Master와 Replica를 사용하겠습니다. (MySQL 8.0 이후로 Master/Slave...
고객사의 대규모 서비스를 도입하게 되어, 관련 내용을 정리하게 되었습니다. Database Replication 이란? 사용자가 많은 서비스에서는 하나의 DB로 모든 요청을 처리하기 어려울 수 있습니다. 그래서 이를 해결하기 위해 고안된 기술이 Database Replication입니다. Database를 Replication(복제)해서 DB Re...
왜 필요해요? 프로젝트를 진행하다 보면 에러 응답 포맷을 변경해야 하는 상황이 생길 수 있습니다. 예를 들어, 고객 요구사항 변경, 공통 응답 규격 개편, 코드 리팩터링 등.. 이때 모든 컨트롤러에 동일한 보일러플레이트 코드가 존재해서 수정할 때 유지보수 비용이 커집니다. try-catch 문 @RestController public class T...
JavaScript 의 null, undefined 알아보기 undefined 의미 JavaScript에서 undefined는 변수를 선언하고 값을 할당하지 않은 상태를 의미합니다. let x; null 의미 null은 변수를 선언하고 빈 값을 할당한 상태입니다. let x = null; 위 차이에 대해 구분하는 테스트하기(typeof 사용) ...
핵심 정리 공통점 : 객체의 상태 변화를 감지하고 뷰를 업데이트하는 데 사용되는 속성 래퍼입니다. @StateObject는 부모 뷰가 직접 객체를 소유하고 관리합니다. @ObservedObject는 부모 뷰에서 객체를 관찰하고 업데이트를 반영합니다. ObservableObject 란? @StateObject 와 @ObservedObje...
Tuist 주소 https://github.com/tuist/tuist Tuist 란? Tuist is a command line tool that leverages project generation to abstract intricacies of Xcode projects, and uses it as a foundation to help teams...