TIL 27

[TIL] 스프링 인터셉터, 개인프로젝트 회고

TIL을 작성하면서 오늘 하루 무엇을 공부했는지 회고해보려한다.이렇게라도 정리해두지 않으면 제대로 끝낸게 없어보여서 '하루종일 뭐했니!' 하고 자책하게 되는 것 같다. 😣1개인 프로젝트 마무리 오늘은 개인프로젝트 마지막날이라 오전 내내 정신이 없었다. 원래는 Lv.6까지 구현하는게 목표였는데, 시간 부족으로 Lv.5 일부까지 구현하고 제출하였다. (점심도 거르고 마지막까지 최선을 다했지만 스스로 정한 기준이 너무 높은건지 썩하니 만족스럽지는 않다.) 그래도 테스트코드를 새로 배운 기념으로 꼭 한 번 적용해보고싶었는데, 쉽지는 않았지만 과제를 통해 사용해볼 수 있는 기회를 얻게 되어 좋았다.새로 배운 내용을 적용하는 것은 쉽지않지만, 정말 '백문이불여일타'라고 직접 써보는게 개념 이해에 정말 큰 도움이 ..

TIL/Spring 2025.01.07

[TIL] ENUM에 대해 알아보자

과제를 수행하던 중 문득 궁금해졌다..name()은 ENUM에 기본적으로 포함되어있는 메서드인가? 클릭해보니 .name()은 ENUM에 포함된 메서드라는 것을 확인할 수 있었다. 찾아보니 .name()외에도 생각보다 다양한 메서드가 있어서 이번 기회에 쭉 정리해보았다.ENUM의 기본제공 메서드 values( )▪️enum에 정의된 모든 상수를 배열로 반환한다.▪️예시⬇️public enum UserRole { ADMIN, USER}public static void main(String[] args) { for (UserRole role : UserRole.values()) { System.out.println(role); }}  valueOf(String str)▪️문자열로 ..

TIL/JAVA 2025.01.03

[TIL] 데이터가 없으면 - 200? 404?

24. 12. 17 기록 요즘따라 시간이 빠르게 지나간다. 공부도 얼마 못한 것 같은데 '왜.. 벌써.. 저녁?' 아무래도 트러블 슈팅에 TIL에 작성해야할게 산더미이다 보니 더 그렇게 느껴지는 것 같다.API 하나 구현하다 궁금한게 생기면 찾아보고, 트러블 슈팅 쓰면서 자료 찾아보고...정신없이 궁금증을 해결하다보면 1시간, 2시간은 훌쩍 지나간다. 이것저것 찾아보느라 오늘도 과제 구현은 느림보 달팽이지만, 그래도 새로 알게된 것들이 많아서 정말 기쁘다! 새로 알게된 내용을 간략히 정리해본다. @RequiredArgsConstructor이 뭘까? @RequiredArgsConstructor는 롬복(Lombok) 라이브러리에서 제공하는 애노테이션다.클래스에 있는 final 필드와 @NonNull 애노테이..

[TIL] TIL은 TIL 답게

최근 TIL을 많이 쓰지 못했다.어느순간부터 양질의 내용을 정리해야한다는 강박이 생겼던 것 같다. 그래도 공부는 꾸준히 하고있다. 🙂‍↕️ 저번주부터 Spring, JPA 학습을 시작했는데, 양이 너무 방대해서 깜짝 놀랐다.하나하나 세세하게 공부하다가는 프로젝트를 시작도 못 할 것 같아서, 일단은 숲을 그려보는 느낌으로 훑어보았다.  아직은 좀 얕게 공부한 편이라 기술 블로그처럼 제대로 정리하기는 무리라고 판단했다.물론 기록에 의의를 두고 대충 쓸 수도 있다. 하지만 누군가가 읽을 수도 있는건데 기왕 쓰는거 제대로 된 정보를 전달하고싶달까. 아무튼, 제대로 정리 하려면 시간이 2시간 가까이 걸려서 부담스럽고, 그렇다고 대충 작성하는 것은 성격에 맞지 않는다.그래서 지식 공유를 목적으로하는 글은 좀 더 ..

[TIL] Spring 의존관계 주입 방법

의존관계 주입은 크게 4가지 방법이 있다. 1. 생성자 주입 2. setter 주입3. 필드 주입 4. 일반 메서드 주입 생성자 주입 생성자 주입은 생성자를 통해 의존 관계를 주입 받는 방법이다. 가장 추천되는 방법이다.생성자 주입은 생성자 호출 시점에 딱 1번만 호출되는 것이 보장된다.또한, 필드를 final로 선언할 수 있기 때문에 런타임에 객체의 불변성을 보장한다.따라서 불변, 필수 의존 관계에 사용된다. ※ 생성자가 1개만 있을 경우 @Autowired 생략이 가능하다.     생성자가 2개 이상일 때 @Autowired를 생략할 경우 오류가 발생한다.@Componentpublic class MyApp { // 필드에 final 키워드 필수! (필수) private final MyServic..

TIL/Spring 2024.12.11

[TIL] Pageable, PageRequest - 페이지네이션

페이징이란 대량의 데이터를 한 번에 처리하지 않고, 일정한 단위로 나누어 처리하는 방법이다.이런 페이징 처리를 위해 필요한 인터페이스인 Pageable과 클래스 PageRequest를 알아보자. Pageable 인터페이스  Pageable 인터페이스는 Spring Data JPA에서 페이징 처리를 위한 정보를 캡슐화하는 역할을 한다.Pageable 인터페이스는 페이징 정보를 처리하기 위한 다양한 메서드를 제공한다. int getPageNumber() 현재 페이지 번호를 반환 (0부터 시작) int getPageSize() 한 페이지당 항목 수를 반환 long getOffset() 쿼리할 때 건너뛸 레코드 수를 반환(페이지 번호 * 페이지 크기) https://docs.spring.io/spring-dat..

TIL/Spring 2024.12.10

[TIL] MySQL 출력할 행의 개수 제한하기 - LIMIT, OFFSET

LIMTI '처음부터 시작해서 몇 개의 행을 반환할 것인가?' LIMIT는 반환할 행의 최대 개수를 제한한다.// 처음 10개의 행만 반환하기SELECT * FROM table_name LIMIT 10;  OFFSET '어디부터 시작할 것인가?' OFFSET은 결과 집합에서 처음 몇 개의 행을 건너뛸 것인지를 지정한다.// 처음 5개의 행을 건너 뛰고 6번째 행부터 10개의 행 반환(= 6번~15번 행)SELECT * FROM table_name LIMIT 10 OFFSET 5;  LIMIT와 OFFSET을 활용한 Pagination 구현 LIMIT와 OFFSET을 활용하면 페이지네이션을 구현할 수 있다.만약 20개의 행을 한 페이지로 보고싶다면 LIMIT 20 을 사용한다.첫 번째 페이지는 OFFSET..

TIL/DB 2024.12.10

[TIL] DATE, DATETIME, TIMESTAMP 비교

MySQL 테이블을 작성 중 '작성일', '수정일' 컬럼의 타입을 지정해야했는데,  찾아보니 날짜 형식을 지정하는 3가지 방법이 있었다. 각각 어떤 차이점이 있는지 정리해보려한다.DATE DATE는 '연-월-일' 만 저장하고 시간을 저장하지 않는다. 형식: 'YYYY-MM-DD'범위: '1000-01-01' ~ '9999-12-31'  실행 예시:CREATE TABLE time( date DATE,);INSERT INTO time (date) value (now()); //시스템 시간 저장SELECT date FROM time;   DATETIME, TIMESTAMP DATETIME과 TIMESTAMP는 '연-월-일'뿐만 아니라 '시간'도 함께 저장한다. 다만, TIMESTAMP는 UTC 시간이 저장되..

TIL/DB 2024.12.06

[TIL] 집계 함수 (COUNT,SUM,AVG...) + LIMIT, DISTINCT

https://school.programmers.co.kr/learn/courses/30/lessons/59408 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 오늘 SQL 문제를 풀면서 COUNT와 DISTINCT에 대해 정리할 필요성을 느꼈다.기왕 이렇게 된거 COUNT만 정리하기는 좀 그러니까 집계 함수에 대해 전반적으로 정리해보았다. '집계 함수' 란? 데이터베이스에서 검색된 여러 투플들의 집단(그룹)에 적용되는 함수   특징 집계함수는 `SELECT`절과 `HAVING`절에서만 사용된다. 'WHERE' 절에서는 집계 함수를 사용할 수 없다.  종류집계 함수기능NULL 값 집계 여부기타 사항CO..

TIL/DB 2024.12.05

[TIL] 릴레이션의 KEY

슈퍼 키(super key) 정의한 릴레이션 내에서 특정 투플을 고유하게 식별하는 하나의 애트리뷰트(기본 키) 또는 애트리뷰트들의 집합 문제점투플을 고유하게 식별하는 데 꼭 필요하지 않은 (=기본 키가 아닌) 애트리뷰트가 포함될 수 있음 후보 키(candidate key) 정의각 투플을 고유하게 식별하는 최소한의 애트리뷰트들의 모임 특징1. 모든 릴레이션에는 최소 한 개 이상의 후보키가 있음2. 기본 키로 선정되지 않은 후보 키도 있을 수 있음 (= 대체 키(alternate key))3. 두 개 이상의 애트리뷰트로 이루어질 수 있음 (=복합 키(composite key)) 💡주의어떤 릴레이션의 인스턴스를 살폈을 때 중복이 없다고 해서 후보키로 판단하면 안 된다.∵ 어떤 시점에 중복된 값이 없다고 해서..

TIL/DB 2024.12.04