TIL 39

if 조건문 최소화 하기

데이터 검증에 대해 사용한 if 조건문을 validate 메소드를 사용해서 정리했다 기존코드UserService.java// user가 존재하는지 확인User user = userRepository.findById(id).orElseThrow(() -> new RuntimeException("User not found"));// 탈퇴한 유저가 아닌지 확인if (user.isDeleted()) { throw new IllegalArgumentException("User is deleted");} 수정된 코드Preconditions.javapublic class Preconditions { public static void validate(boolean expression, ErrorCode er..

TIL 2024.09.06

Code Convention 도구 "Spotless"

팀프로젝트를 진행하면서 merge를 했는데 코드의 일관성이 너무 떨어져서 튜터님이 알려준 Spotless plugin을 적용했다 build.gradleplugins { id 'com.diffplug.spotless' version '6.23.3'}//compile시에 동작tasks.named('compileJava') { dependsOn 'spotlessApply'}spotless { java { googleJavaFormat().aosp() // 아래 순서로 import문 정렬 importOrder('java', 'javax', 'jakarta', 'org', 'com') // 사용하지 않는 import 제거 removeU..

TIL 2024.09.05

jakarta.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'jakarta.validation.constraints.NotBlank' validating type 'java.lang.Long'. Check configuration for error

public class FollowerCreateDto { @Getter @NoArgsConstructor @AllArgsConstructor public static class Request { @NotBlank private Long followerId; }}validation을 적용하면서 '@NotBlank'를 추가했는데 오류가 발생했다@NotBlank 어노테이션은 문자타입에만 사용가능하다 숫자타입이기 때문에@NotBlank -> @NotNull변경하여 오류를 해결했다 public class FollowerCreateDto { @Getter @NoArgsConstructor @AllArgsConstructor public st..

TIL 2024.09.03

면접 피드백, 추가 공부할 것 정리

객체지향 프로그래밍네가지 특징 - 캡슐화- 추상화- 상속- 다형성다섯가지 원칙 (SOLID)- 단일 책임 원칙- 개방 폐쇄 원칙- 리스코프 치환 원칙- 인터페이스 분리 원칙- 의존관계 역전 원칙  RESTful한 API를 설계하는 장점URL로 해당하는 자원을 표현하고메소드로는 행동을 표현한다협업, 클라이언트의 입장에서 규격이 정해져있어 용이하다+ 단점은?+ 어떤 메소드로 이뤄져 있는지 Setter 사용 지양 이유필드가 많아지는 경우 객체의 상태 변화를 추적하기 어려움불변성 RDBMS, NoSQL+차이점 정리+장단점 정리 이번 과정 목표 한번씩 정리할것Java 코드가 실행되는 과정을 설명할 수 있다JVM 구조를 정리할 수 있다코드와 메모리를 연관 지어 설명할 수 있다스트림의 이해와 스트림의 사용법 익히기O..

TIL 2024.08.30

Cannot add or update a child row: a foreign key constraint fails Error

https://github.com/everydayspring/spring-jpa-scheduler GitHub - everydayspring/spring-jpa-schedulerContribute to everydayspring/spring-jpa-scheduler development by creating an account on GitHub.github.com 프로젝트 진행중 새로운 Entity 추가 후 발생한 에러 새로운 테이블을 생성할 때 참조받는 테이블의 데이터가 이미 삽입되어 있어서 발생한 오류였다 전체 테이블을 drop하고 재실행 하니 오류가 나지 않았다

TIL 2024.08.29

프로그래머스 알고리즘 문제풀이 달리기 경주 (시간 초과)

https://school.programmers.co.kr/learn/courses/30/lessons/178871 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 처음 작성한 코드import java.util.*;class Solution { public String[] solution(String[] players, String[] callings) { List list = Arrays.asList(players); for(String calling : callings) { int index ..

TIL 2024.08.28

면접 준비

RESTful한 API를 설계하는 장점은?- HTTP Method를 사용한다(GET, PUT, POST, DELETE 등)- HTTP 프로토콜의 표준을 최대한 활용하기 때문에 HTTP의 추가적인 장점을 함께 가져갈 수 있다- HTTP에서는 Stateless 즉, server가 client의 상태를 유지하고 있지 않기 때문에 응답과 요청이 독립적이고, 서버의 확장성이 높다- client의 요청에 세션, 쿠키 등의 방법으로 상태를 유지한다 적절한 관심사 분리가 필요한 이유는?- 프로그램의 유연성을 높일 수 있다 Setter를 무분별하게 사용하면 안되는 이유는?- DTO 같은 경우 전송 객체이기 때문에 데이터가 변경되지 않는다는 것이 보장되어야 한다, 이러한 경우에 Setter의 사용은 굉장히 위험하다  No..

TIL 2024.08.26