본문 바로가기

Programming17

[Programming] - Builder 패턴이란? Lombok의 Builder 패턴을 반복적으로 사용하면서 빌더 패턴이 정확히 무언인지 궁금해서 조사해보게 되었다. 빌더 패턴이란? 빌더 패턴은 복잡한 객체들을 단계별로 생성할 수 있게하여, 다양한 구성의 인스턴스를 만드는 디자인 패턴이다. 예를 들어 음료 제조 레시피를 들 수 있다. 예를 들어 커피를 제작하려고 한다고 생각해보자. 같은 커피 음료라는 분류 속에서도, 아메리카노, 에스프레소부터 해서 카페 라떼까지, 손님에 따라 주문하는 원두의 종류도 다르고 각 음료의 레시피도 분명히 다를 것이다. 만약 위의 상황을 코드로 구현해보자 한다면, 커피 음료라는 큰 상위 객체(인스턴스)를 만들려고 생각할 것이다. 그리고 음료 제조에 들어가는 재료들을 객체의 속성으로 포함시킬 것이다. 그리고 음료 제조시마다 생성자.. 2024. 3. 20.
[Spring] 테이블 매핑, 영속성 전이 (cascade) 자주 쓰이는 다대일 매핑에 대해 알아보고 영속성 전이에 대해서도 알아보기 가장 일반적인 다대일 관계인 상품 테이블과 공급업체 테이블을 가지고 설명해보도록 하겠다. 🏷️ 다대일 단방향 매핑 위의 예시 테이블처럼, 여러 개(다)의 상품이 한 개(일)의 공급업체로 매핑되는 관계를 의미한다. 다대일 단방향 매핑을 하기 위해서는 한쪽에(매핑의 주인, 외래키를 갖는 엔티티), 아래와 같은 코드가 추가 되어야 한다. public class Product { @ManyToOne @JoinColumn(name = "provider_id") @ToString.Exclude private Provider provider; } 위의 코드에 대해 설명하자면, Product(상품) 엔티티에서 Provider(공급업체)에 대해 다.. 2024. 3. 13.
[Spring] - 인증과 인가 웹 애플리케이션을 구현할 때 아마도 가장 먼저 접하게 되는 부분이 회원가입 및 로그인 서비스 구현이다. 사용자가 서비스를 보다 더 안전하고 효율적으로 사용할 수 있도록 하는데 있어, 인증(Authentication) 과 인가(Authorization) 과정은 매우 중요하다. 인증과 인가가 필요한 이유 사용자와 관리자와 같이 특정 역할에 따라 접근할 수 있는 데이터에 제한을 두고자 할 때, 인증과 인가가 필요하다. 이렇게 권한별로 접근을 달리함으로써 데이터를 보다 안전하게 관리할 수 있게 된다. 🏷️ 인증 (Authentication)이란? ◽ 인증은 사용자가 누구인지 확인하는 단계이다. ◽ 인증의 대표적인 예로 '로그인'이 있다. 🏷️인가 (Authorization)란? ◽인증을 통해 검증된 사용자가 애.. 2024. 3. 7.
[Spring] - @RestControllerAdvice를 통한 커스텀 예외 처리 작성 방법 Postman을 통해 request에 대한 response를 받을 수 있는데, 에러가 발생 시 이해하기 어려운 장문의 문장들이 뜨는 것을 볼 수 있다. 시스템적인 문제부터 클라이언트의 문제까지 에러의 종류는 다양한데, 서버측에서 명확하게 파악할 수 있는 에러들은 따로 정의해서 사용자가 알아보기 쉽게 할 방법을 찾아보기로 하였다. @RestControllerAdvice @ControllerAdvice + @ResponseBody 형태로, RESTfull한 웹 서비스를 개발할 시 예외 처리 로직을 구현할 때 적합하다. @RestControllerAdvice 를 사용함으로써, 컨트롤러 계층 전반에서 발생하는 예외들을 한 곳에 서 효율적으로 관리하고 처리할 수 있게 된다. 즉 @RestControllerAdvi.. 2024. 2. 27.
[Spring 🤔] - @Autowired vs @RequiredArgsConstructor 궁금증 배경 ) 스프링 부트 핵심 가이드 책을 보면서, 책에선 @Autowired를 통해 외부 인터페이스의 생성자를 작성하는 반면 나는 @RequiredArgsConstructor로 외부 인터페이스 의 생성자코드를 생략해서 쓰고 있었다. 이 둘의 차이점은 뭐고 사실 정확히 어떤 이유로 사용하는 이참에 알아보기 위해 조사해보게 되었다.! Q1. @Autowired와 @RequiredArgsConstructor의 공통점, 사용 목적은? A : @Autowired와 @RequiredArgsConstructor은 둘 다 의존성 주입!(Dependency Injection)을 달성하기 위한 목표를 가지고 있다. Q2. @Autowired와 @RequiredArgsConstructor의 차이점은? A : '@Aut.. 2024. 2. 22.
[Spring 🤔] - lombok @Builder, @NoArgsConstructor, @AllArgsConstructor의 사용에 대해 궁금증 배경 ) 강의를 듣다보니 자연스럽게 (무의식적으로) @Builder, @NoArgsConstructor, @AllArgsConstructor를 적고 있는 나를 발견했다.. 파악한 부분은 대강 @Builder는 그냥 써도 되지만, 만약 @NoArgsConstructor를 쓰게 된다면 @AllArgsConstructor를 필수적으로 붙여줘야 한다는 것이였다.. 그렇지만 왜? 쓰지는 궁금하여 찾아보게 되었다. ✅ 엔티티 클래스를 생성할 때 Builder 패턴을 쓰게 된다. 이유는 엔티티의 모든 속성들을 다 설정할 필요없이 필요한 값만으로 객체를 쉽게 생성할 수 있기 때문이다. Q1. 그렇다면 @Builder는 @AllArgsConstructor 와 함께 써야 하는걸까? A : 앞서 Builder는 생성.. 2024. 2. 19.