전체 글 422

Chapter 02. 스프링 부트 시작하기

스프링 부트 개발 환경 스프링 부트 2.7.6 JDK 8/11/17 설치 Java 11 Gragle - groovy Spring Boot 2.7.6 group: tobyspring artifact: helloboot jar Hello API 테스트 http request를 생성하고 http response를 확인한다. 웹 브라우저 개발자 도구 curl intelliJ ultimate http request Postman API platform: JUnit test HTTPie content HTTP 요청과 응답 웹 애플리케이션의 동작 구조: 웹 클라이언트가 요청을 보낸다. 웹 컨테이너는 해당 요청을 처리할 컴포넌트를 찾아서 요청을 위임한다. 컴포넌트는 요청을 분석하고 처리한다. 결과로 만들어진 응답이 클..

Chapter 01. 스프링 부트 살펴보기

스프링 부트(Spring Boot)란? 스프링 부트는 스프링을 기반으로 실무 환경에 사용 가능한 수준의 독립 실행형 애플리케이션을 복잡한 고민없이 빠르게 작성할 수 있게 도와주는 여러가지 도구 모음이다. 알아서 결정해준다. 스프링과 스프링 부트는 다르다. 애플리케이션을 만들 수 있도록 도와주는 기술이다. 예전의 엔터프라이즈 애플리케이션은 web appliction archive 라는 와? 파일 같은 형태로 패키징해서 서버에 배포한다. 그 위에서 동작시키는 방식으로 사용했다. 그런데 스프링 부트는 .java, .jar? 를 이용해서 애플리케이션 전체를 바로 실행 가능하다. 스프링 부트(Spring Boot) 목표 빠르고 광범위한 영역의 스프링 개발 경험을 제공한다. 강한 주장을 가지고 즉시 적용 가능한 기..

[06월 1주차] Spring VM 옵션 설정 방법, JVM 구조

Spring VM 옵션 설정 방법 - IntelliJ, VS code 차이점 사내에서 vs code, eclipse를 쓰는 분들도 있고 IntelliJ 를 쓰기도 한다. vs code 에서는 빌드 관련한 설정을 위해서 .json 형태의 파일을 쓴다. ("-Dkey=value" 와 같은 데이터가 담겨 있다. ) 그런데, 이를 intelliJ에 적용하려면 어떻게 해야할까? 먼저, yml 파일에 개발 버전, 배포 버전에 대한 설정 값을 다르게 설정한다. spring: config: activate: on-profile: - local # 로컬로 실행할 경우, 설정 정보 ex) DataBase 정보 등 spring: config: activate: on-profile: - dev # 배포할 경우, 설정 정보 다..

[programmers] JOIN

5월 식품들의 총매출 조회하기 출처 - https://school.programmers.co.kr/learn/courses/30/lessons/131117 생산일자가 2022년 5월에 해당하는 식품의 ID, NAME, 총매출을 조회하는 SQL문을 작성 정렬: 총매출 내림차순 정렬, 식품 ID 오름차순 정렬 MySol) SELECT PRODUCT_ID, PRODUCT_NAME, SUM(PRICE * AMOUNT) TOTAL_SALES FROM FOOD_PRODUCT JOIN FOOD_ORDER USING (PRODUCT_ID) WHERE YEAR(PRODUCE_DATE) = 2022 AND MONTH(PRODUCE_DATE) = 5 GROUP BY PRODUCT_ID ORDER BY 3 DESC, 1 주문..

[programmers] String, Date

조건에 부합하는 중고거래 상태 조회하기- level 2 출처 - https://school.programmers.co.kr/learn/courses/30/lessons/164672 Sol) SELECT BOARD_ID,WRITER_ID,TITLE,PRICE, CASE STATUS WHEN 'RESERVED' THEN '예약중' WHEN 'DONE' THEN '거래완료' WHEN 'SALE' THEN '판매중' END STATUS FROM USED_GOODS_BOARD WHERE CREATED_DATE = "2022-10-05" ORDER BY 1 DESC CASE 문 이용 대여 기록이 존재하는 자동차 리스트 구하기 - level 3 출처 - https://school.programmers.co.kr/le..

[programmers] SUM, MAX, MIN

가격이 제일 비싼 식품의 정보 출력하기 - level 2 출처 - https://school.programmers.co.kr/learn/courses/30/lessons/131115 Sol) SELECT * FROM FOOD_PRODUCT WHERE PRICE = ( SELECT MAX(PRICE) FROM FOOD_PRODUCT ) where 절 서브 쿼리 가장 비싼 상품 구하기- level 1 출처 - https://school.programmers.co.kr/learn/courses/30/lessons/131697 Sol) SELECT PRICE MAX_PRICE FROM PRODUCT WHERE PRICE = ( SELECT MAX(PRICE) FROM PRODUCT ) 집합 함수 max() 최댓..

[programmers] IS NULL

이름이 없는 동물의 아이디 - level 1 출처 https://school.programmers.co.kr/learn/courses/30/lessons/59039 Sol) SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NULL 필드명 IS NULL: 필드명의 데이터가 NULL인 로우만 찾아온다. 경기도에 위치한 식품 창고 목록 출력하기 - level 1 출처 https://school.programmers.co.kr/learn/courses/30/lessons/131114 Sol) SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, COALESCE(FREEZER_YN, 'N') FROM FOOD_WAREHOUSE WHERE ADDRES..

[05월 3주차] querydsl JOIN 방법

에러 해결 axios 요청 응답이 null인 경우 오류 get 요청을 보낸 응답에서 데이터가 없는 경우, 오류가 발생했다. if 문을 만족하지 않으니까 태그 안 코드가 실행되지 않는 게 정상인데 계속해서 들어갔다. 원인 get 요청을 보낸 응답 데이터에 리스트가 비어 있는 경우, res.data 는 null 이 아니고 res.data.data가 null이다. 보통 axios로 요청을 보내면 응답 객체는 data, status, statusText, headers, ...와 같은 구조가 있다. 따라서, 뒤에 ".data"를 붙여야 실제로 필요한 데이터에 접근할 수 있다. 해결 다음과 같이 수정한다. ========== script ========== $axios .get( util.format($apiUr..

[05월 2주차] Vue.js 3 modal(모달, 팝업) 창 띄우기

Note 선택 불가능한 콤보 박스 만들기 - disabled Detail - 부모 "Detail"은 자식 컴포넌트를 의미한다. 자식 컴포넌트 Detail 에게 statusCdList2라는 데이터를 보내서 자식 컴포넌트의 변수 statusCdList1에 값을 전달한다. 코드 리스트는 statusCdList변수를 선언과 동시에 store에서 데이터를 가져와서 statusCdList에 저장한다. view 라는 컴포넌트가 DOM에 렌더링되자마자 실행되도록 onMounted() 메서드 안에 코드 리스트 가져오는 getCodeList()를 넣어줘야한다. // script onMounted(() => { getCodeList(); }); const getCodeList = () => store.dispatch("St..

Chapter 06. Spring Data JPA가 지원하는 querydsl 기능

인터페이스 지원- QuerydslPredicateExecutor 앞으로 살펴볼 Spring Data가 제공하는 기능은 제약이 커서 복잡한 실무환경에서 사용하기에는 부족하다. 어떤 한계점이 있을까? Ex) 리포지토리에 적용 Repo QuerydslPredicateExecutor public interface UserRepository extends JpaRepository, QuerydslPredicateExecutor { } Iterable result = userRepository.findAll( member.age.between(10, 40).and(member.username.eq("member1"))); Note) 한계점 묵시적 조인은 가능하나 leftjoin은 불가능하다. 클라이언트가 Query..