
@Builder Lombok의 @Builder 어노테이션은 클래스 레벨에 붙이거나 생성자에 붙여주면 파라미터를 활용하여 빌더 패턴을 자동으로 생성해준다. > 빌더 패턴 보통 생성자를 통해 객체를 생성하게 되는데 빌더를 사용하면, 생성할 때 필요한 데이터만 설정할 수

JSR-303 표준 스펙(자바 진영 스펙)으로써 빈 검증기(Bean Validator)를 이용해 객체의 제약 조건을 검증하도록 지시하는 어노테이션이다.DTO에 검증이 필요한 필드에 @NotNull 어노테이션과 같은 어노테이션들을 달아주고, Controller의 메서드의

원래 @Transactional 어노테이션을 선언하게 되면 변경 감지(Dirty Checking)가 이루어지게 되지만 readOnly = true로 설정하면 스프링 프레임워크는 JPA의 세션 플러시 모드를 MANUAL로 설정한다.그로 인해 해당 어노테이션 영역 내에서

schedule : 여러 명의 일정 담당 유저를 가질 수 있다.user : 여러 개의 스케줄을 담당할 수 있다.manage : 일정 테이블과 유저 테이블이 N:M 관계라 생성한 중간 테이블이 중 일정을 작성한 유저는 추가로 일정 담당 유저들을 배치할 수 있습니다.이 문

A 서비스에서 A 레포지토리 외에 다른 레포지토리를 주입받아서 단순 조회를 한다면 상관없지만, 그 외에 값에 대한 어떠한 변경 작업이 일어난다면 A 서비스는 B 레포지토리를 주입받는 것이 아니라 B 서비스를 주입받아야 한다.그러나 이때 A 서비스의 트랜잭션이 부모가 되

🔎 Connection Pool? 데이터베이스와 어플리케이션을 연결하는 과정은 굉장히 비용이 많이 듭니다. 이런 비용을 줄이기 위해 Connection Pool의 개념이 등장하게 되었습니다. 먼저 Connection Pool에 데이터베이스에 연결된 객체들을 생성해둔

🔎 HikariCP Dead lock? 이 블럭은 HikariCP의 About Pool Sizing의 pool-locking 부분의 번역입니다. pool-locking은 하나의 액터(쓰레드나 작업자)가 많은 커넥션을 획득하는 경우에 발생할 수 있는 가능성으로 제기되어 왔습니다. 이 문제는 대부분 애플리케이션 수준에서 발생하는 문제입니다. 물론, 이러한...

동기와 비동기 > 용어 정리 caller :: 호출하는 함수 callee :: 호출당하는 함수 동기 caller가 callee에게서 응답이 돌아올 때까지 대기합니다. 장점 간단한 설계 직관적 단점 요청에 대한 결과가 반환되기 전까지 대기해야 함

🔎 Proxy? 기본 개념 프록시는 클라이언트가 사용하려는 실제 대상처럼 동작하며 클라이언트의 요청을 받아 실제 대상에게 요청을 위임합니다. 프록시가 실제 대상인 것처럼 위장함으로서 이를 사용하는 클라이언트는 구체 클래스를 알 필요가 없습니다. 주로 실제 대상의 기능

🔎 Spring AOP? 기본 개념 Spring에서는 Proxy를 기반으로 AOP를 구현합니다. AOP는 Aspect Oriented Programming의 약자로, 관점 지향 프로그래밍이라고 하며 핵심 관심사(Core Concerns)와 횡단 관심사(Cross-cu

🔎 Self Invocation? 기본 개념 Sample 클래스 내에 innerMethod1이라는 내부 메서드가 innerMethod2를 호출하고 있습니다. 이렇게 한 클래스 내에서 내부 메서드가 또 다른 내부 메서드를 호출하는 것을 Self Invocation,

🔎 IoC Container? IoC(Inversion of Control) Container는 Spring Framework의 핵심 기능 중 하나로 객체의 생성, 구성, 생명주기 관리를 개발자가 아닌 컨테이너가 제어하는 설계 원칙입니다. 기존에는 개발자가 직접 객체

🔎 Spring Bean? 기본 개념 Bean은 Spring IoC Container에 의해 관리되는 재사용 가능한 객체(POJO)를 의미합니다. 이러한 Bean들은 컨테이너에서 제공하는 구성 메타데이터(예를 들면 XML의 `` 정의 형태)를 기반으로 생성됩니다.