개발 4

JPA 즉시 로딩 JPA Repository를 쓰면서 실수 안 할 수 있는가?

회사에서 백엔드를 JPA를 통해 개발하였고, 동료분들은 즉시 로딩과 지연 로딩을 자유자재로 사용하고 계셨다. 문제를 발견한 것은 JPA Repository이다. 다음은 엔티티의 코드이다. (설명에 필요한 부분들로 최소한으로 작성하였습니다) Product를 조회할 때 Eager를 통해 variant도 가져오도록 하였다. @Entity @NoArgsConstructor @AllArgsConstructor @Getter public class Product { @Id @Column(name = "product_id") private Long id; @OneToMany(mappedBy = "product" , fetch = FetchType.EAGER) private List variants; private Z..

개발 2024.04.06

TDD를 알고리즘 문제 풀이에 적용시켜보자

저는 TDD를 공부하던 중 TDD를 이용하여 알고리즘 문제를 풀면 괜찮지 않을까?라는 생각을 하게 되었습니다. 시간은 조금 더 걸리겠지만, TDD의 장점인 내 코드에 대한 피드백이 빠르기 때문에 즉각적으로 제가 잘못 작성한 코드를 알 수 있을 것이라는 기대감을 품고 시작하였습니다. 결론부터 말씀드리자면 TDD를 알고리즘 문제에 적용시키는 것은 추천드리지 않습니다. 2164번 소스코드 더보기 package BOJ; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.function.Function; public clas..

개발 2022.05.10

TDD START!

저는 책을 읽다보니 TDD에 관심을 가지게 되었습니다. 해당 책에서는 실험을 통해 TDD에 대한 얘기를 했고 TDD 미적용시 30분 정도 걸리는 코드를 TDD를 적용시켰을 때 대략 10%정도 빠르게 작업이 완료되었다고 한다. 그래서 저도 TDD를 적용시켜보고자 자료를 찾아보던 중 DDD START!의 저자이신 최범균님의 TDD 유튜브를 찾게 되었습니다. (밑에 해당 유튜브의 링크를 걸어놨습니다.) 이제부터 작성하는 글은 해당 유튜브의 내용을 요약이니 유튜브를 직접 보시는 것을 강력히 추천드립니다. 최범균님께서 예시를 들어 실제로 TDD를 적용했을 때 어떻게 개발이 진행되는지를 라이브 코딩으로 보여주십니다. 😀 테스트 코드의 필요성 수동 테스트 - 검증 범위 누락 발생하기 쉽다. - 예외 상항 검증하기 어..

개발 2022.05.03

DTO의 사용 범위에 대한 생각

DTO란? - DTO는 Data Transfer Object로 계층 간 데이터 교환을 하기 위해 사용하는 객체입니다. - DTO는 DB에서 꺼낸 데이터를 저장하는 Entity를 가지고 만들어지고, Controller 같은 클라이언트 단과 직접 마주하는 계층에 직접 Entity를 전달하지 않고 DTO를 사용해 데이터를 교환합니다. Entity와 DTO를 분리하는 이유 - Entity가 외부에 노출되는 것을 막기 위함 Entity가 외부에 노출된다면 사용자 민감 정보 등이 노출될 수 있습니다. - 컨트롤러 메서드 파라미터에 Entity 그래도 사용 시 validation 코드가 Entity 코드에 섞이게 됩니다. 컨트롤러 같은 경우 입력에 대한 검증이 필요하다. 허나 컨트롤러에서 메소드 파라미터로 Entit..

개발 2022.04.12