개발공부/받은 질문들 3

받았던 질문 : getter를 쓰는 것을 지양하라는 이유는 무엇일까?

어제부터 '객체지향의 사실과 오해' 에 관해 동기들끼리 스터디를 하기로 했다. 그 전에 잡담을 하면서 서로의 코드를 리뷰해보고 있었는데( 이거 말고도 보통의 남자들끼리 모이면 하는 그런 이야기도 많이 한다.) 로그인을 위한 validate로직을 보면서, 왜 이렇게 만들었으며 더 나아가 getter를 지양하는게 어떤 방향인지 이야기하게 되어 정리해보려고 한다. 물론 내 코드도 정답은 아니고, 어쩌면 오답에 더 가까운 코드일 수 있다. 하지만, 그런 부분을 짚어주면서 보는 사람이 있다면 나는 이 글을 통해 더 공부하는 거니까 정확한 당시 동기의 코드를 가져오진 않았지만, 당시에 기억나는 대로 똑같이 작성해보았다. 이 부분에 대해서 더 많은 예시와 설명을 위해 대략 20~30분 정도를 사용했던 것 같다. 사실..

받았던 질문 : 도대체 JPA에서 파라미터 없는 생성자를 왜 만들어야 할까?

2023년 1학기 캡스톤 디자인 프로젝트를 하면서, 다른 동기가 있는 조에서 dto마다 인스턴스들을 초기화시키는 생성자가 있어야 하는 이유는 너무 당연한데, 도대체 인스턴스 없이 만드는, NoArgsConstructor가 왜 존재해야 하는가를 궁금해했던 적이 있었다. 우리 조원들에게도 그 부분에 대해 알까 싶어 물어봤지만, 모른다는 이야기를 들었다. 그래서 이에 대해 정리를 해보려고 한다. 일단, JPA의 특성중에 프록시와 지연로딩에 대해서 먼저 알고오면 쉽다. 프록시는 엔티티를 상속받아 정의된다. 프록시에서는 실제 엔티티와 같은 인스턴스들이 초기화되지 않고 만들어지게 된다. 인스턴스 없는 생성자가 무엇일까? 그게 NoArgsConstructor이다!!!(이렇게 블로그 내용 돌려막다 보면 언젠가는 링크만..

받았던 질문 : ExceptionAdvice? 이거 어떻게 동작하는거임?

캡스톤을 하다가, 한 동기가 질문했던 부분을 블로그에 남겨보기로 했다. 일단 받은 질문을 간단하게 요약하자면, 스프링은 자바로 동작한다. 자바에서는 에러가 발생하면, RuntimeException(이놈 말고도, IllegalArgumentException처럼 extends RuntimeException을 받는 녀석들이 있다)으로 발생하는 예외들은 분명 러닝과정에서 빨갛게 예외가 발생했다고 뜬다. 근데 이렇게, Response를 이용해 Exception에 대해 뭐시기를 해주는게 의미가 있는가? 였다. 일단, 이러한 유튭..아니 블로그각을 만들어준 동기에게 감사하고 정리를 조금 해봐야겠다. 테스트를 위해 하나의 예외를 집어넣어 실행을 시켜보았다. 이 상태에서, 실행을 시키고 해당 컨트롤러 uri를 요청하면,..