본문 바로가기

Programming/Spring12

[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.
[Spring] - 데이터베이스 ORM(Object Relational Mapping) ▫ 뜻 : 자바와 같은 객체지향 언어에서 의미하는 객체와 RDB(Relational Database)의 테이블을 자동으로 매핑하는 방법 ⚠ 객체의 클래스와 데이터베이스의 테이블의 속성은 정확하게 일치하진 않는다. ➡️ ORM 이 이 둘의 불일치와 제약사항을 해결하는 역할을 해준다. ▫ ORM의 장점 데이터베이스 쿼리를 객체지향적으로 조작할 수 있다. 쿼리문을 작성하는 양이 줄어든다. 객체 지향적으로 DB에 접근할 수 있어 코드의 가독성이 높아진다. 재사용 및 유지 보수가 편리하다. 객체들은 각 클래스로 나누어져 있어 재사용 및 유지보수가 수월하다. 데이터베이스에 대한 종속성이 줄어든다. ORM을 통해 자동 생성된 SQL문은 객체를 기반으로 DB 테이.. 2024. 2. 13.