전체 글

모든 코드에는 이유가 있어야 한다고 생각하는 코딩하는 대학생입니다.
이 글을 읽고 계시는 여러분을 유명한 햄버거 체인의 백엔드 직원으로 상상해 봅시다. 문제 상황 맥도날드, 롯데리아, 버거킹만 해도 햄버거의 다양성이 상상을 초월합니다. 그리고 햄버거에는 패티 추가, 양상추 추가, 양파 빼기 등 수많은 옵션들이 있습니다. 어느 날 여러분에게 온라인 햄버거 주문 시스템을 개발하라는 지시가 내려졌습니다. 이런 상황에서 여러분은 어떻게 이러한 다양한 햄버거를 구현할 것인가요? 아마 데코레이터 패턴을 알지 못하시는 분들은 "공통 인터페이스를 만든 뒤, 구현하면 되죠!!"라고 말씀을 하실 것이라고 생각됩니다. 밑의 그림은 책에 나온 예시입니다. 비록 햄버거는 아니었지만 커피를 예시로 다이어그램을 그린 그림입니다. 정말 수많은 클래스들이 하나의 인터페이스를 구현하는 모습을 볼 수 있..
LazyInitializationException이란 객체를 로딩할 때 지연로딩이 적용된 엔티티 또는 컬렉션을 초기화하지 못했을 때 발생하는 런타임 예외입니다. 지연 로딩? 지연로딩이란 자신과 연관된 엔티티를 실제로 사용할 때 연관된 엔티티를 조회하는 것을 말합니다. Team과 Member로 예시를 들면 1:N 관계에서 매번 Team을 불러올 때마다 Member를 가져올 필요가 없다면 이때 지연 로딩을 사용합니다. 배달의 민족 상점을 예시로 들어보겠습니다. 배달의 민족에서 음식을 시키기 위해 카테고리별 상점들을 보고 있을 때 저희는 상점의 정보만 필요합니다. 리뷰를 보고 싶으면 상점을 클릭해서 그 상점의 리뷰를 보죠. 상점과 리뷰는 1:N관계인데 상점을 호출할 때 상점에 달린 리뷰를 가져올 필요가 없는 ..
보호되어 있는 글입니다.
3주 차 미션은 설계 실수도 있었고, 코드에 욕심이 생겨 스스로 많은 생각이 들었던 한 주였다. 2주 차의 problem 1. 값을 하드코딩 하지 않는다. (공통 피드백) 2주차 미션을 풀 때는 '1', ', '등의 문자를 상수로 정의하지 않고 하드코딩 하였습니다. 3주 차 미션에서는 이러한 문제점을 해결하기 위해 각 클래스에 상수로 정의하였습니다. private static final String ONE_STEP = "-"; private static final String RESULT_MESSAGE = "최종 우승자"; private static final String COLON = " : "; public static final String CAR_NAME_MESSAGE = "경주할 자동차 이름을 ..
비슷한 듯 안 비슷한 두 친구... Steam API 란? 컬렉션, 배열 등의 저장 요소를 하나씩 참조하며 함수형 인터페이스를 적용하여 반복적으로 처리할 수 있도록 해주는 기능입니다. 컬렉션이란? 자바의 컬렉션은 데이터를 저장하고 관리하는 클래스의 집합을 의미합니다. List : 순서가 있는 데이터의 집합을 다루며 데이터의 중복을 허용합니다. Set : 순서를 유지하지 않는 데이터의 집합을 다루며, 중복을 허용하지 않습니다. Map : (Key, Value)의 쌍으로 이루어진 데이터의 집합입니다. Key는 중복을 허용하지 않습니다. Queue : 데이터가 입력된 순서대로 접근이 가능하며, 주로 데이터의 순서를 관리할 때 사용합니다. 람다식이란? (int a, int b) -> a + b // (파라미터)..
1주 차의 Problem을 해결하자. 회고의 목적은 문제를 인식하고 개선을 하는 것입니다. 1주 차의 Problem 1. JDK 17을 효과적으로 활용하지 못했다. 이 문제점을 해결하기 위해 JDK 17의 Record을 사용했습니다. public record RoundResultDto(String name, int location) { } public record GameResultDto(List winners) { } Record를 사용한 이유 간결성과 불변성이라는 장점을 가지고 있다. 필드 정의와 getter 메서드 작성 등의 반복적인 작업을 한 줄로 간결하게 표현할 수 있습니다. equals, toString, hashCode 등의 메서드를 자동으로 생성해 줍니다. 2. 의존성 주입 private ..
코딩하는_대학생
코딩하는 대학생에서 개발자까지