(22-12-26) Lombok (롬복) / DTO (DataTransferObject)

C one·2022년 12월 26일
0

/ 롬복이 무엇인지 , 롬복의 활용

* Lombok이란 :

Lombok은 getter, setter, toString 등등 반복 메서드 작성 코드를 줄여주는,자동작성해주는 라이브러리이다
   
Lombok은 여러 @어노테이션을 제공하고, 이를 통해 여러 반복소스코드를 컴파일 과정에서 코드를 생성해준다
(코딩 과정에서 @어노테이션 작성 -> 컴파일의 결과물인 .class 파일에는 코드가 생성된다)
* 사용법 : 

/ @Getter, @Setter : 필드에 대한 getter, setter를 자동으로 생성해주는 Annotation
    
/ @NonNull : 메소드나 생성자의 매개변수에 @NonNull을 사용하면 lombok이 null check를 해준다
해당 변수가 null로 넘어온 경우, NullPointerException 예외를 일으켜줌
    
/ @ToString : @ToString이 붙은 클래스는 lombok이 toString() 메소드를 생성해준다. 
기본적으로는 클래스 이름과 각 필드에 대한 값을 ,으로 구분해서 출력해준다.
    
/ @NoArgsConstructor : 매개변수가 없는 생성자를 생성한다. 
    
/ @RequiredArgsConstructor : 초기화되지 않은 모든 final 필드, @NonUll 필드에 대한 생성자를 생성해준다.
    
/ @AllArgsConstructor : 모든 필드에 대한 생성자를 만들어준다.
    
    등등
* 주의할 점 : 

단순히 Annotation을 이용해서 코드를 작성해주는 라이브러리이므로 
각 API가 어떤식으로 작동하는지 숙지한 채로 사용하는 것이 좋다. 
다른 라이브러리와 충돌이 발생할 수도 있고 내가 원하지 않는 방식으로 작동할 수도 있기 때문이다.

예로 @Data@ToString의 경우 순환 참조 또는 무한 재귀 호출로 인해 StackOverFlowError가 발생할 수도 있다
* 알게 된 것 : 

롬복의 @어노테이션을 어떤용도로 어떤 원리로 사용하는지 이해하게 되었다.
더 많은 기능을 알아봐야할것 같다

/ DTO(DataTransferObject) 왜 사용할까?

* DTO란 : 계층 간 데이터 전송을 위해 도메인 모델 대신 사용되는 객체
	
데이터를 주고받을때 DB에 연결된 클래스를 그대로 두고, 정보를 가지고 다니는 객체(DTO)를 따로 만든다
    
DTO는 순수하게 데이터를 저장하고, 데이터에 대한 getter, setter 만을 가져야한다고 한다
* 사용 이유 : 도메인 모델을 캡슐화 하여 보호하기위함
	
도메인 모델을 계층 간 데이터 전송에 이용하면, 
UI계층에서 도메인 모델의 메소드를 호출하거나 상태를 변경시킬 수 있다
    
또한 UI 화면마다 사용하는 도메인 모델의 정보는 상이하기 때문에, 
불필요한 데이터를 노출시켜 보안문제가 발생할 수 있다 
    
그렇기 때문에 순수하게 데이터만을 저장한 DTO를 거쳐 계층 간 데이터를 전송한다
* 알게 된 것 : 
DTO의 역할이 도메인 모델의 데이터를 보호하는것임을 알게되었다
DTO의 사용범위가 영속성레이어를 지양한다고 하는데 이에 대해서는 영속성 컨텍스트를 이해하고 찾아보자
profile
🌽

0개의 댓글