전체 글(38)
-
컴파일? 빌드? Gradle? gradle wrapper? gradlew?
제목이 좀 긴데 내가 항상 헷갈렸던 개념들과 그냥 모르고 썼던 개념들이다. 이번에 배포를 하는 과정을 해보게 되면서 직접 CLI 환경에서 빌드를 하는데 빌드란게 정확히 뭔지 몰라서 알아야할 필요성을 느꼈다. 우리가 평소에 흔히 빌드한다. 빌드한다. 컴파일 시점에 못잡는다. 뭐 이런 말들을 아무렇지 않게한다. 나는 그 뜻을 정확히 모르고 그냥 느낌상으로 알고만 있었다. 컴퓨터 용어를 느낌상으로 안다는게 좀 웃기고 모르고 있는게 창피해서 알아가면서 정리해두려고 한다. 컴파일? 빌드?쉽게 정리하자면 컴파일 : Java와 같은 high level language를 컴퓨터가 이해 가능한 low level language로 바꿔주는 작엄빌드 : Java와 같은 high level language를 컴퓨터가 이해 ..
2025.03.21 -
스프링에서 예외를 처리하기
만약 서버에서 에러(=예외)가 난다면? -> 서버가 죽는다(=멈춤)서버가 멈추면 안된다!그렇다면 발생하는 에러들을 Handle(다뤄주어야함) 해주어어야한다. -> 그것이 Exception Handle 어떻게? 가장 기초적으로 해결하는 방법은 try catch를 사용해서 "이러한 코드에서는 요런 에러가 발생하겠군.." 이라 생각하고 try로 감싼 후에 catch로 그 예외를 handle 해준다.하지만 언제 다 모든 코드들을 이렇게 예외처리 해주겠나.. 그래서 이렇게 2가지 측면으로 예외처리를 생각해 볼 수 있다. "예외처리를 공통관심사로 빼서 따로 관리하자.""무슨에러임을 알 수 있도록 정보를 더 전달해주자." -> 보안적으로? 위험할 수 도 있는데 여기서 말하는 무슨에러임을 알 수 있게한다는건 http ..
2025.03.21 -
QueryDSL의 BooleanExpression, Projections, Pagination
저번 글에 이어서 QueryDSL을 이용해서 이제 더 복잡한 쿼리들을 작성할 수 있게 되었다! 이런 상황을 가정해 보자.일정을 불러올때 검색 조건이 1. 제목을 이용한 검색2. 생성일을 기준으로 구간 검색3. 일정의 매니저 이름으로 검색 (일정은 생성 시에 작성한 유저로 자동등록된다 but 일정은 여러개의 유저를 가질 수 있다)와 같을 때 컨트롤러를 이렇게 작성할 수 있다.@GetMapping("/todos/querydsl")public ResponseEntity> getTodosByQueryDSL( @RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "10") int size, @Req..
2025.03.14 -
QueryDSL
처음엔 JDBC Template 그 다음 MyBatis 그 다음 JPA로 쿼리를 작성해왔다.하지만 JPA의 메서드 작성규칙만으로는 어렵고 복잡한 쿼리를 작성하기 어렵다.그래서 JPQL로 쿼리를 더 자세하게 쓰기 시작했다.하지만 JPQL은 문자열로 쿼리를 작성한다는 단점이 있고 개발자가 오타를 낸다면 버그를 발생한다는 문제점이 있다.그 해결책으로 나온것이 바로 QueryDSL! QueryDSL이란?QueryDSL은 하이버네이트 쿼리 언어(HQL: Hibernate Query Language)의 쿼리를 타입에 안전하게 생성 및 관리해주는 프레임워크다.QueryDSL은 정적 타입을 이용하여 SQL과 같은 쿼리를 생성할 수 있게 해준다.자바 백엔드 기술은 Spring Boot와 Spring Data JPA를 함..
2025.03.14 -
AOP?
AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍) 객체지향프로그래밍처럼 처음에 이것만 놓고 보면 무슨 소린지 이해가 안간다. 쉽게 말해서 프로그래밍을 측면적인 관점에서 바라보는 것이다. 공통적인 측면, 핵심로직 측면 등등... 공통 관심사를 한 곳에서 관리할 수 없을까…?공통 관심사 -> 공통적이긴 한데, ‘공통’적이기 때문에 해당 로직에서 ‘핵심’ 로직은 아닐 가능성이 높다. 따라서 AOP를 사용한다면 코드에서는 핵심 로직에만 집중할 수 있는 장점이 있다. 비유를 들자면 🎭 비유: 연극과 무대 관리자프로그램을 연극에 비유해 보자.연극 배우(클래스 & 메서드)연극에는 여러 배우(클래스와 메서드)가 등장하고, 각자의 대사와 행동(핵심 로직)을 수행한다.예를 들어, User..
2025.03.12 -
테스트 코드
테스트 코드 작성 전 알고 있어야 할 사항테스트코드는 어떻게 구성해야 할까?보통 이렇게 구성하는 것이 일반적이다.정상 케이스입력값의 범위가 0~128 일때 10, 50, 100 등을 입력 받았을때 테스트엣지 케이스(경계 조건)입력값의 범위가 10미만일 때 A동작, 10이상 일때 B동작을 해야한다면 9, 10, 11 에 대한 테스트예외 상황입력값이 숫자만 받아야할때 문자를 입력한 경우 예외처리가 되는지 테스트정상의 경우, 경계값, 예외상황 이렇게 3가지를 염두해 두고 작성하자. 테스트코드 준비스프링부트에서 제공하는 테스트 라이브러리를 의존성에 추가dependencies { testImplementation 'org.springframework.boot:spring-boot-starter-test'} ..
2025.03.12