본문 바로가기

패스트캠퍼스/100% 환급 챌린지_2

패스트캠퍼스 환급챌린지 22일차 : Netplix 구독형 멤버십 프로젝트로 배우는 Spring Security 강의 후기

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://abit.ly/lisbva

 

 

안녕하세요 :)

오늘은 챌린지 22일차로, 벌써부터 졸음이 오는 점심시간이네요.. 공부하고 낮잠을 잠깐..^^

 

오늘 배울 내용은,

Part A. 로그인, 로그아웃, 회원가입으로 배워보는 스프링 시큐리티 기초

Ch 6. 실전: 로그인, 로그아웃, 회원가입 만들어보기

"03. 모듈 설계와 도메인 엔티티" 입니다.


 

이번 시간에는 지난 시간에 이어서 도메인 모델이랑 엔티티 등에 대해 살펴보는 시간을 가졌다. 관리하는 테이블은 크게 2가지가 있었는데, 유저테이블과 권한을 관리하는 Authority 테이블이 있었다. 두 개의 테이블에 대한 엔티티 클래스들이 어떻게 생성될 수 있는지도 살펴봤다..

먼저, 엔티티의 경우에는 객체라서 프로젝트에서는 레파지토리 패키지 아래에 위치를 시켰었다. 그래서 레파지토리 아래에 가면 엔티티라는 패키지가 하나 더 있고, 엔티티에 들어가면 Authority 라는 것과 그 다음에 유저라고 하는 엔티티가 노출된다.

public class AuthorityEntity 로 만든 후에 Getter, Entity, Table, AllArgsConstructor, NoArgsConstructor 어노테이션을 붙여주었다. 이 클래스는 당연히 엔티티이기 때문에 ID를 나타내는 필드가 필요하고, MySQL의 경우 GenerationType의 IDENTITY로 해서 값이 하나씩 증가하게끔 설정했다. 그래서 Id와 GeneratedValue 어노테이션을 활용해서 ID 필드를 하나 만들었다.

Authority 엔티티의 경우에는 Name이라는 필드와 UserEntity라는 ManyToOne으로 연결되어 있는 필드가 하나 필요하여 어노테이션을 붙여주었다. 또, 참조를 위해 JoinColumn이라는 어노테이션을 활용했고, 값에 userEntity를 입력해주었다. 한 명의 유저가 여러 개의 Authority를 가질 수 있기 때문에 ManyToOne을 활용했다.

AuthorityEntity 엔티티를 만들 때는 name과 user 두 개의 값을 받아서 하나의 Authority 엔티티를 만들어줄 수 있도록 설정하면 된다.

Authority는 내부 도메인에서 활용을 하고 있는 객체이다. 그래서 영속성 레이어에서 관리하는 Authority 엔티티에서 도메인 레이어에서 관리하는, 즉 서비스 레이어 또는 비즈니스 레이어에서 관리하는 객체인 Authority로 변환을 하기 위한 변환 메소드라고 보면 될 것 같다.

 

이번 시간에는 모듈 설계와 도메인 엔티티가 어떻게 구성되어 있는지 확인하는 시간이였고, 다음 시간부터는 스프링 시큐리티 관련 설정에 대해 알아보고 이후에 직접 구현하는 시간을 가져보게 될 것 같다.