분류 전체보기 52

[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

[Trouble shooting] 일정 관리 앱 만들기 - 트러블 슈팅

(24.12.04) 1. 한글 인코딩 문제로 인해 발생한 MySQL 다운로드 문제 [문제 상황]MySQL을 설치하는 과정 중 계속 같은 단계에서 오류가 발생했다.처음에는 버전 문제인가 싶었지만, 버전과 관계 없이 모종의 이유로 설치가 막혔다. 문제 화면을 캡쳐해두지는 못했지만 아래 빨간 박스로 표시해둔 단계를 넘어가지 못했다. 무엇이 문제인가 싶어서 튜터님과 함께 로그기록을 살펴보니 대략 어떤 파일을 찾을 수 없다는 문구가 나와있었다. [해결 시도]그 뒤로는 관리자 권한으로 설치 시도도 해보았고, 또 파일 설치 위치가 ProgramData로 되어있었는데, ProgramData는 숨겨진 파일이라 찾을 수 없다고 하는건가 싶어서 Program Files로 설치 경로를 바꿔보기도 했다. 하지만 무슨 짓을 해도..

[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

[TIL] HTTP: Hypertext Transfer Protocol

HTTP 란?HTTP(Hypertext Transfer Protocol)은 여러가지 정보 취득이나 발신에 사용하는 인터넷의 핵심 프로토콜이다.HTTP의 메세지는 사람이 읽을 목적으로 전달되는 것이 아닌, HTTP 서버와 HTTP 클라이언트(브라우저)가 읽고 해석할 목적으로 전단된다.즉, HTTP는 조회형 프로토콜로서 서버의 80번 포트에 설정된 소켓에서 HTTP 요청과 응답을 교환함으로써 통신을 수행한다. 이때 HTTP는 TCP 서비스를 이용한다.HTTP 트랜잭션HTTP에서 클라이언트와 서버 간의 요청과 응답과정을 알아보자.HTTP에서 클라이언트에서 서버로 보내는 명령은 요청(request) 메세지에 들어있고, 요청에 대한 파일 내용, 그 외의 정보는 응답(response) 메세지에 들어있다.HTTP는 ..

TIL/네트워크 2024.12.03

[TIL] DI(의존성 주입)와 IoC(제어의 역전)

'의존성 주입' 이란? - (DI: Dependency Injection) 의존성 주입(DI)이란 어떤 한 객체가 의존 관계인 다른 객체를 외부로부터 주입받는 것이다. 즉, 객체가 자신이 의존하고 있는 객체를 직접 생성하지 않고, 외부로부터 주입 받음으로써 객체간의 결합도를 낮추고 유연성을 높이는 방법이다. 아래 예시를 보며 좀 더 정리해보자. 여기 Car라는 객체가 있다. Car의 생성자를 보면 Engine이라는 객체를 필요로하고 있다. 따라서 현재 Car와 Engine은 의존 관계이다.(여기서 Engine은 인터페이스다)public class Car { ... public Car(Engine engine) { this.engine = engine; } ...} 하지만 C..

TIL/JAVA 2024.11.29