요즘 프로젝트 리팩토링을 하면서, DTO에 작성하는 여러개의 lombok 어노테이션의 사용 이유를 정확히 알지 못하고 사용하는 것 같아서 하나하나 고찰(?) 해보기로 했다. 일단, DTO는 Data Transfer Object로, REST API 작성 시에 엔티티 대신에 DTO를 사용하여 컨트롤러에서 데이터를 주고받는 용도로 사용한다. DTO를 사용하면 엔티티에 변질을 막을 수 있고, 로직에 맞춰 필요한 필드만 주고받을 수 있어 DTO를 사용하는 것이 좋다. 컨트롤러에서 DTO를 주고받기 때문에 JSON 직렬화와 역직렬화가 일어난다. - 직렬화(serialization) : Java Object 가 JSON으로 변환되는 것으로, ResponseBody를 사용할 때 일어난다. (서버 -> 클라이언트) - ..
예전 프로젝트 리팩토링을 진행하다가 문득 궁금한 것들이 생겼다. JPA를 사용하면서 Entity, DTO 클래스에 꼭 여러가지 lombok 어노테이션을 달아왔었다. 예를 들어, @Builder, @NoArgsConstructor, @AllArgsConstructor, @Getter 등... 그런데 어느 순간부터 이 어노테이션이 왜 필요한지 어떻게 쓰이는지를 잊고 습관적으로 갖다 붙이고 있는 것 같았다. 알아도 정확히 알고 있는 듯한 느낌이 아니었다. 그래서 이에 대해 많이 검색해보고 알아보았다. 일단 Entity 클래스에는 @Entity 를 붙여야한다. 난 항상 이렇게 달아왔다. @Entity @Builder @AllArgsConstructor @NoArgsConstructor(access = Acces..
예외처리 프로그래밍을 할 땐 다양한 예외 상황이 발생한다. 이 예외 처리를 잘해야 좋은 프로그램이 될 수 있다. 예외 처리를 try-catch문을 사용하거나 다른 여러가지 방법들로 할수도 있지만, 이는 코드가 복잡해지고 유지보수 하기에도 어렵다는 문제점이 있다. 예외처리를 한번에 다른곳에서 처리하고 비즈니스 로직에서는 비즈니스 로직만 작성하여 코드가 복잡해지지 않도록 할 수 있다. @ExceptionHandler 이 어노테이션은 메서드에 붙일 수 있는데, @Controller와 @RestController가 적용된 Bean에서 생기는 예외를 캐치하여 이 메서드에서 처리해주도록 한다. 메서드의 인자로 캐치하려는 예외 클래스를 작성하면 된다. 리턴 타입은 하고싶은대로 해도 된다. @ExceptionHandl..