Backend/Spring

1. 순환 참조란?JPA에서 엔티티 간 양방향 연관 관계를 설정하면 서로가 서로를 참조하는 구조가 만들어질 수 있다.이 자체는 잘못된 것은 아니지만, 직렬화(예: JSON 변환)나 무한 출력, 디버깅 시 순환 참조 예외로 이어질 수 있다.예를 들어 @OneToMany, @ManyToOne 구조를 모두 선언하면 순환이 생길 수 있다. 2. 디지몬을 예시로 살펴보자.디지몬 파트너 구조를 생각해보자.Tamer(테이머)는 여러 마리의 Digimon(디지몬)을 가질 수 있고,각 Digimon은 자신이 속한 Tamer를 알고 있다. 이 구조는 다음과 같이 모델링할 수 있다.@Entitypublic class Tamer { @Id @GeneratedValue private Long id; privat..
사실 거창하게(?) 적었지만 디지몬은 큰 의미없다.디지몬을 모르는 사람은 오히려 혼란스러울 수 있다.1. N + 1 문제란?N + 1 문제는 JPA에서 연관된 엔티티를 조회할 때, 불필요하게 많은 SQL 쿼리가 발생하는 현상을 말한다. 예를 들어, 1개의 쿼리로 N개의 엔티티를 가져온 다음,각각의 엔티티에 대해 추가로 또 다른 쿼리를 1개씩 실행한다면?→ 총 N + 1개의 쿼리가 실행된다. 이 현상은 대부분 JPA의 연관 관계 + 지연 로딩(LAZY) 설정이 맞물릴 때 발생하며,성능 병목의 대표적인 원인 중 하나다. 1.1 지연 로딩(LAZY)과 즉시 로딩(EAGER)JPA는 연관관계를 설정할 때 fetch 속성을 통해 해당 연관 객체를 언제 로딩할 것인지를 정의할 수 있다.@ManyToOne(fetch..
0. 들어가며교육 중 총괄님의 코드리뷰를 받던 중 헥사고날 아키텍처에 대한 언급이 있었다. 간단한 예제를 통해 구조를 보여주시고 설명해주셨는데 찾아보니, 최근 도메인 중심 아키텍처 설계에서 점점 많이 언급되고 있는 아키텍처라고 한다. 전통적인 계층형 아키텍처 (Layered Architecture)와 비교하면서 구조적 차이, 장단점, 그리고 왜 헥사고날 아키텍처가 점점 주목받고있는지 알아보고 정리해보았다. 1. 기존의 계층형 아키텍처는 어떤 모습인가?우리가 흔히 사용해왔던 구조는 다음과 같다.Presentation Layer (Controller) ↓Business Layer (Service) ↓Persistence Layer (Repository) 이런 아키텍처는 구현이 단..
본인은 아직 인텔맥을 사용 중이다.19년 모델 i9 인텔맥 제일 좋은 옵션이라.. 바꾸고는 싶은데 못바꾸고 계속 쓰고있다.. 혹시 모를 미래의 나와, 나같은 사람들을 위해 기록해본다.1-1. Homebrew로 Maven 설치# homebrew가 설치되어있는지 확인brew -v# homebrew가 설치되어 있지 않다면 이 명령어로 설치/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 1-2. Apache 공식 사이트에서 Maven 설치특수한 상황이 아니라면 위의 homebrew를 사용하는 방식을 사용하자.본인은 Spring Cloud, Spring Boot 상황에 맞춰 원하는 버전의 M..
0. 들어가며 외주가 들어왔다. 전 회사에서 새로운 개발자 채용 또는 내부에서 처리하겠다고 한건이 퇴사한 나에게 넘어왔다.웹앱 출시 후 실제 결제 API로 변경과 결제취소 구현이 남아있었는데.. 결국 돌고돌아 내가 다시 맡게되었다.다른 유지보수 건들도 있었는데 그건 다 끝나고.. 카카오페이 API는 몇번 만져봤으니 후딱 해치워보자. 물론, 실제 비지니스에 직결되어있으며, 금액 관련 기능이라 꼼꼼히 살펴봐야한다. 1. 공식문서 살펴보기https://developers.kakaopay.com/docs/payment/online/cancellation 카카오페이 | 개발자센터새로운 기회와 가치를 함께 만들어봐요developers.kakaopay.com Request Response 다른 응답값들에 대한 변수들..
이 글은 스터디를 진행하며 '스프링 핵심 원리 - 기본편 (김영한)' 강의를 듣고 정리한 글입니다. 스프링이란? - 자바 언어 기반의 프레임워크 - 자바 언어의 가장 큰 특징 - 객체 지향 언어 - 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크 - 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크 스프링 프레임워크 - 핵심 기술: 스프링 DI 컨테이너, AOP, 이벤트, 기타 - 웹 기술: 스프링 MVC, 스프링 WebFlux - 데이터 접근 기술: 트랜잭션, JDBC, ORM 지원, XML - 기술 통합: 캐시, 이메일, 원격접근, 스케줄링 - 테스트: 스프링 기반 테스트 지원 - 언어: 코틀린, 그루비 - 최근에는 스프링 부트를 통해서 스프링 프레임워크의 기술들을 편리하게 ..
chillmyh
'Backend/Spring' 카테고리의 글 목록