++/CS

[TIL] CS공부 13일차

writtenbyrla 2024. 3. 20. 18:10

DTO에 대한 설명과 함께 왜 Entity 인스턴스를 Client에 그대로 전달하면 안되는지에 대해 설명해주세요.

DTO 
일반적으로 데이터를 담는 컨테이너로, 데이터베이스로부터 데이터를 읽어오거나 클라이언트로 데이터를 보낼 때 사용하는 데이터 전송 객체(Data Transfer Object)입니다.

데이터 은닉의 원칙 위반
Entity 클래스는 데이터베이스와 관련된 정보가 포함되어 있으므로 Entity 클래스를 그대로 노출하게 되면 데이터 은닉 원칙을 위반할 수 있습니다.

보안 문제
Entity에는 비즈니스 로직 외에도 데이터베이스와 관련된 정보가 포함될 수 있으므로 DTO를 사용하여 데이터를 캡슐화하여 클라이언트가 필요로 하는 데이터만 전달할 수 있도록 해야 합니다.

의존성 문제
Entity 클래스가 변경되면 관련된 모든 코드를 수정해야 하므로 유지보수가 어렵기때문에 DTO를 사용하여 클라이언트와 서버 간의 의존성을 최소화해야 합니다.

 

 

 

 

 


 

 

 

 

 

JPA의 연관관계외래키에 대해서 설명해주세요.

JPA에서 연관관계란 객체 간의 관계를 뜻하며 일대다, 다대일, 다대다 등과 같은 연관관계를 표현하기 위해 @OneToMany @ManyToOne @ManyToMany, @JoinColumn과 같은 어노테이션을 사용합니다.

외래키는 관계형 데이터베이스에서 한 테이블의 필드가 다른 테이블의 기본 키를 참조하는 것을 말하는데,
JPA에서 어노테이션을 확인하여 테이블 간의 연관관계를 자동으로 매핑합니다.

++
고려해야 할 사항
방향 주인 다중성

 

 

 

 


 

 

 

 

인증인가에 대해서 설명해주세요.

인증
사용자의 정보를 확인하고 검증하는 과정

인가
인증된 사용자가 서비스나 자원에 대한 권한을 가지고 있는지 결정하는 프로세스

 

본인의 프로젝트의 인증 인가에 대해서 어떻게 구현했는지를 중심으로 설명해주세요.

인증
사용자가 로그인을 하면 JWT 토큰이 생성되고, 이 토큰에 사용자의 정보와 권한을 저장합니다.
로그인한 사용자가 프로필 수정 등과 같이 인증이 필요한 요청에 JWT 토큰을 함께 전송하고,
서버의 JWT 인증 필터에서 사용자 정보를 확인합니다.

인가
회원 권한 변경 등 관리자 권한이 필요한 경우 Spring Security를 이용하여 Config 클래스에서 requestMatchers로 특정 URL에 .hasAnyRole("ADMIN")와 같이 접근 가능한 권한을 명시하였습니다.



 

 

'++ > CS' 카테고리의 다른 글

[TIL] CS공부 15일차  (0) 2024.03.28
[TIL] CS공부 14일차  (0) 2024.03.21
[TIL] CS공부 12일차  (2) 2024.03.19
[TIL] CS공부 11일차  (1) 2024.03.18
[TIL] CS공부 10일차  (1) 2024.03.15