일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- 보안
- 소프트웨어공학
- 프로그래밍
- 소프트웨어
- 컴퓨터공학
- 파이썬
- 컴퓨터비전
- 네트워크
- 자료구조
- 딥러닝
- 데이터분석
- 자바스크립트
- springboot
- I'm Sorry
- 데이터과학
- 빅데이터
- 머신러닝
- 데이터베이스
- 버전관리
- 프로그래밍언어
- 클라우드컴퓨팅
- Yes
- 네트워크보안
- 인공지능
- 사이버보안
- 디자인패턴
- 컴퓨터과학
- 웹개발
- 데이터구조
- 알고리즘
- Today
- Total
목록springboot (35)
스택큐힙리스트
1. 코루틴과 트랜잭션이 충돌하는 이유Spring @Transactional ↔ ThreadLocalJPA 트랜잭션은 현재 스레드에 커넥션·영속성 컨텍스트를 바인딩합니다. 하지만 suspend 함수는 언제든 다른 스레드로 재개(resume)될 수 있어 컨텍스트가 사라지면서 TransactionRequiredException 등이 터집니다.전파 옵션 무력화REQUIRES_NEW처럼 새 트랜잭션을 강제해도, 같은 빈 내부·동일 코루틴 컨텍스트라면 프록시가 건너뛰어 한 트랜잭션으로 묶이는 사례가 잦습니다.동시성 확산async {} · withContext(Dispatchers.Default) 등으로 트랜잭션을 복수 스레드에 퍼뜨리면 데드락·커넥션 고갈로 직행합니다.2. Spring Boot 3.x 이후 지원 ..
1️⃣ 트랜잭션 전파(Propagation)란?스프링 AOP 프록시가 현재 실행 중인 트랜잭션을 “새로 만들지, 이어받지, 잠깐 끊을지” 결정하는 규칙입니다. 전파 옵션 의미 (한 줄 요약) REQUIRED (기본)❝있으면 참여, 없으면 새로 생성❞ – 80 % 이상 이걸로 OKREQUIRES_NEW❝무조건 새 트랜잭션❞ – 외부 트랜잭션과 독립 커밋/롤백NESTED❝논리적 내부 트랜잭션❞ – Savepoint 기반 부분 롤백 가능SUPPORTS / NOT_SUPPORTED❝있으면 따라가고 / 완전히 비트랜잭션❞MANDATORY / NEVER❝반드시 있어야 함 / 있으면 안 됨❞ – Assertion 용 실전 팁REQUIRES_NEW는 알림 메일·로그 저장처럼 메인 로직 실패와 분리하고 싶을 때.NES..
1. 왜 ‘데이터 접근 레이어’인가?Spring Boot 서비스가 커질수록 Entity → Repository → Service 삼단 구조는 유지보수와 확장성을 지켜주는 필수 뼈대입니다.Entity: 데이터베이스 테이블과 1 : 1로 매핑되는 도메인 모델Repository: Spring Data JPA가 만들어 주는 CRUD + 확장 쿼리 메서드Service: 트랜잭션 경계에서 비즈니스 로직 담당2. 의존성 및 기본 설정implementation 'org.springframework.boot:spring-boot-starter-data-jpa'runtimeOnly 'com.h2database:h2' // 개발·테스트runtimeOnly 'com.mysql:mysql-connector..
왜 또 Facade인가?서비스 레이어에 Repository가 열 댓 개씩 붙고, 컨트롤러가 여러 서비스·유틸을 직접 호출하기 시작하면 의존성 지옥이 열린다. Facade 패턴은 이런 상황을 ‘CS 상담원’처럼 중간에 세워 단순한 진입점 하나로 묶어 결합도를 확 줄인다.1️⃣ Facade 패턴, 핵심 개념정의 : 서브시스템의 여러 인터페이스를 하나로 통합해, 고수준 인터페이스만 노출하는 구조 패턴.효과 : 클라이언트는 내부 구조를 몰라도 되고, 변경은 Facade 뒤에서만 일어나므로 유지보수 위험이 급감한다.2️⃣ 언제 쓰면 딱 좋을까?서브 시스템·Repository가 과다해 테스트, 모킹 비용이 폭증할 때컨트롤러가 순환 참조를 유발할 만큼 많은 서비스를 부르는 상황레거시·외부 라이브러리 API를 숨겨 계..