java(7)
-
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 -
[1/24] TIL - Spring Annotation, Client에서 Server로 데이터를 보내는 방식
😊오늘 배운 내용오늘은 스프링의 어노테이션과 클라이언트가 서버에게 데이터를 보내는 3가지 방식에 대해 배웠다. [@Slf4j]로그를 출력하는데 사용하는 어노테이션이다.스프링의 여러개 어노테이션들은 인터페이스로 이루어져있다. slf4j 어노테이션은 위와 같이 생겼다. slf4j 어노테이션 위에도 여러개의 어노테이션이 붙어있다. Target은 정말 말 그대로 이 어노테이션이 어떠한 것을 타겟으로 하는지에 대해 enum타입으로 범위를 지정한다. Retention은 보유하다 라는 뜻인데 해당 어노테이션이 어느 시점까지 유지되는지 나타내는 어노테이션이다. Retention의 3가지 종류@Retention은 다음 세 가지 값을 가질 수 있어:SOURCE어노테이션이 컴파일 시점에만 유지되고, 컴파일된 .class ..
2025.01.24 -
[1/17] TIL - 키오스크 프로젝트에 Enum, Stream, IntStream 적용해보기
😊오늘 배운 내용자바 쓰레드 개념 부분 다시 정리하기, Enum과 Stream 세션, 키오스크 도전과제 완료하기 [어떤 문제가 있었는지 + 어떻게 해결하였는지]1. Enum 적용Enum이 무엇인지 잘 이해가 가지 않았었는데 오늘 세션을 들으면서 Enum과 Stream 사용법에 대해서 얼추 알게 된 것 같다. Enum은 쉽게 생각해서 타입을 강제한다는 뜻으로 이해하면 될 것 같다. Enumerate가 열거하다, 낱낱히 세다의 의미니까 여러가지의 타입들을 열거해놓고 그 중에서만 가져다 쓴다는 뜻으로 이해하면 쉬울 것 같다. 나는 할인률을 적용할 때 User의 타입, 메뉴 카테고리의 타입을 강제하기 위해서 Enum을 적용했다. UserTypepackage org.example.level6;public en..
2025.01.17 -
[1/16] TIL - 키오스크 프로그램 구현 + 장바구니 기능, static은 왜 쓰면 안될까, 다른 달팽이들은 신경쓰지 말자
😊오늘 배운 내용자바 문법 5주차 완강, 자바 메모리 세션(static을 왜 사용하면 안되는가 stack,heap,nativememory), 키오스크 과제 level6[어떤 문제가 있었는지 + 어떻게 해결하였는지]1. 오늘도 역시나 키오스크 과제 요구사항을 보니 머리로 잘 이해가 안됬다. 물론 예시 출력이 있어서 그걸 보면서 어떻게 동작해야할지 로직을 따로 정리해보았다. 이렇게 정리하고 나니 로직을 어떻게 짜야할 지 눈에 보였고 중간중간 코드 작성하면서 어떻게 해야하지?하고 헷갈릴 때는 이 노트를 다시 보았다. 코드package org.example.level6;import java.util.ArrayList;import java.util.List;import java.util.Scanner;publi..
2025.01.16 -
static 키워드와 반복문 밖에서 객체 생성, 널세이프
계산기 과제 해설 세션을 들으며 내가 배우고 깨달았 던 점을 정리해보았다! 1. 반복문 밖에서 객체 생성의 중요성코드를 작성하는 과정에서 나의 문제점은 계산 결과가 리스트에 지속적으로 쌓여야 하는데 그렇지 않았다는 점이다. 그래서 내가 추론한 과정은 이러하다.App클래스에서 계산을 수행할 때 while 무한반복문을 돌며 계속 객체를 새로 생성하는 것 같다. -> 각기 다른 객체가 만들어지고 객체마다 메모리 주소가 다른 ArrayList를 참조하고 있을 것이다. -> 때문에 한 개의 ArrayList에 여러객체의 계산 결과값이 공유되어 있지 않다. -> 그렇다면 이 ArrayList를 인스턴스멤버가 아닌 클래스멤버로 바꾸자! -> static 키워드를 이용하자. 였다. 그래서 나는 ArrayList를 st..
2025.01.14 -
[1/13] TIL - 콘솔 출력 형식 지정, 계산기 코드 개선, 앞으로의 공부 다짐 😊
😊오늘 배운 내용오늘은 계산기 과제 해설 세션 level2까지 공부, 자바 문법강의 4주차, 키오스크 과제 level 2까지 해결했다. [어떤 문제가 있었는지 + 어떻게 해결하였는지]1. 키오스크 과제 입출력 형식 지정키오스크 과제는 콘솔기반 인터페이스로 설계하는 과제이다. 처음에 메뉴를 사용자에게 보여줄 시 다음과 같이 콘솔에 찍히도록 해야한다.[ SHAKESHACK MENU ]1. ShackBurger | W 6.9 | 토마토, 양상추, 쉑소스가 토핑된 치즈버거2. SmokeShack | W 8.9 | 베이컨, 체리 페퍼에 쉑소스가 토핑된 치즈버거3. Cheeseburger | W 6.9 | 포테이토 번과 비프패티, 치즈가 토핑된 치즈버거4. Hamburger | W 5.4 | ..
2025.01.13