TIL 49

build.gradle > dependencies 의존성 옵션

- Compile 시점 의존성 : 프로젝트를 컴파일할 때 사용, 해당 라이브러리의 API 사용 가능- Runtime 시점 의존성 : Application을 실행할 때 사용, 실행 시에도 라이브러리 필요- 은닉성 : 'implementation'으로 추가된 의존성은 다른 프로젝트 모듈에서 직접 접근불가 (모듈간 캡슐화) implementation직접적인 의존성을 추가할 때 사용특정 라이브러리나 모듈이 컴파일 시에 필요하고 프로젝트 외부로 공개될 필요가 없는 경우 runtimeOnlyRuntime 시점에만 필요한 라이브러리를 추가할 때 사용ex. Logging, DB 관련 라이브러리 등 testImplementation테스트 코드를 수핼할 때 적용할 라이브러리를 추가할 때 사용라이브러리나 빌트인 DB를 테스..

TIL 2024.10.01

JPA 연관관계

@OneToOne일대일 관계를 나타내는 매핑 정보1:1 관계를 지정하기에 앞서 이것이 꼭 물리적으로 테이블이 분리되어야 하는지에 대해 생각해 봐야 합니다.1:1 관계로 구성 한다는 것은 결국 하나의 목적에 부합되는 공통된 데이타를 관리한다고 볼 수 있으며 이것은 하나의 테이블에서 관리 할 수 있는 데이타일 가능성이 높다는 의미입니다.즉, 의도적 중복이 아니라면 사용할일이 없다는 말의도적 중복 예시) 버블 구독상품을 사서 채팅방이 생길경우. 구독상품과 채팅방은 1:1 관계 @OneToMany일대다 관계를 나타내는 매핑 정보@OneToMany가 단방향으로 쓰이면 문제가 발생할 수 있다.속도를 위해 기본적으로 FetchType 설정이 LAZY 로 설정되어 있습니다.속성mappedBy : 연관관계의 주인 필드를..

TIL 2024.10.01

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