전체 글

전체 글

    EP3. 컬렉션 조회 최적화 - 2 (JPA에서 DTO 직접조회)

    2021.04.06 - [Web/JPA] - EP2. 지연 로딩과 조회 성능 최적화 2021.04.07 - [Web/JPA] - EP3. 컬렉션 조회 최적화 - 1 EP3. 컬렉션 조회 최적화 - 1 주문내역에서 주문한 상품정보까지 추가로 조회 해보자. EP2 에서는 @XToOne 을 조회하는 기능을 최적화 했었다. 2021.04.06 - [Web/JPA] - EP2. 지연 로딩과 조회 성능 최적화 여기서는 @XToMany인 컬렉션을 ksabs.tistory.com 앞에서는 엔티티를 DTO로 변환해서 컬렉션으로 반환했다. 이번에는 DTO를 그대로 반환해서 JPA가 DTO를 직접 조회하게 만들어 보겠다. JPA에 DTO를 직접 반환 하는것의 장단점은 이미 정리를 해봤었다. 장점 쿼리가 한번만 나간다. 원하..

    EP3. 컬렉션 조회 최적화 - 1

    주문내역에서 주문한 상품정보까지 추가로 조회 해보자. EP2 에서는 @XToOne 을 조회하는 기능을 최적화 했었다. 2021.04.06 - [Web/JPA] - EP2. 지연 로딩과 조회 성능 최적화 여기서는 @XToMany인 컬렉션을 조회하는 기능을 구현하고 최적화 해보자. Order 엔티티에서 컬렉션인 OrderItem과 OrderItem의 Item이 필요하다. Item도 Order 기준으로는 컬렉션이다. Order package jpabook.jpashop.domain; import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import javax.persistence..

    EP2. 지연 로딩과 조회 성능 최적화

    주문을 조회하는 API를 설계해보았다. package jpabook.jpashop.api; import jpabook.jpashop.domain.Order; import jpabook.jpashop.repository.OrderRepository; import jpabook.jpashop.repository.OrderSearch; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * XToOne (ManyToOne, One..

    EP1. 회원관리 API 만들기

    @RequestBody를 이용해 Json 요청을 DTO로 받을 수 있다. 그리고 @RestController를 클래스 레벨에 적어주면 반환할때 DTO를 반환하면 JSON으로 변환해준다. 자세한 내용은 MVC 정리에서 볼 수 있다. 2021.03.29 - [Web/MVC] - EP6. HTTP 요청 데이터 처리 EP6. Http 요청 데이터 처리하기 Http 헤더 꺼내기 docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-annarguments Web on Servlet Stack Spring Web MVC is the original web framework built on the Servlet API and.. ksabs.t..

    [카카오커머스] 2021 개발자 공개채용

    카카오 커머스의 신입, 경력자를 프로그래머스의 코딩테스트로 선발한다. programmers.co.kr/competitions/1010/2021-kakaocommerce-developers 2021 카카오커머스 개발자 공개채용 진행 정보 2021 카카오커머스 개발자 공개채용 카카오커머스의 개발자는 카카오톡 선물하기, 쇼핑하기, 카카오스타일, 쇼핑하우, 카카오메이커스, 카카오프렌즈 등 다양한 서비스를 구현하고 완 programmers.co.kr 졸업도 못했고, 아직 Java로 코테보는 것이 익숙하진 않았지만 경험삼아 지원했다. 문제유출이 금지여서 기억나는 대로 유형만 나열해 보겠다. 알고리즘 3문제 1. 리스트이용해서 품 너무 쉬워서 유형은 모르겠음 -> 품 2. 완전탐색 -> 품 3. BFS 최단경로, 경..

    [프로그래머스] 2021 Dev_Maching 상반기

    Dev_Maching 프로그래머스에서 주최하는 기업과 개발자를 매칭하는 이벤트이다. programmers.co.kr/competitions/977/2021-web-be-first 2021 Dev-Matching: 웹 백엔드 개발자(상반기) 접수 21년 03월 08일 11:00 ~ 04월 02일 17:00 테스트 21년 04월 03일 16:00 ~ 04월 03일 18:00 programmers.co.kr 졸업을 안해서 신입개발자로 들어가진 못하겠지만 코딩테스트 경험을 쌓는 의미로 지원했다. 문제유출이 금지되어있어서 기억나는대로 유형만 나열해 보겠다. 알고리즘 3문제, SQL 1문제 알고리즘 1. 리스트 이용해서 풀었다, 너무쉬워서 무슨유형인지 모르겠음 -> 만점 2. 배열 회전, 그런데 테두리만 회전해야한..

    EP9. PRG (Post/Redirect/Get) 패턴

    상품등록과 같은 POST 요청을 보내고 나서 Redirect 처리를 안해주면 새로고침 시 POST 요청이 또 나갈 수 있다. 왜냐하면 새로고침은 마지막 요청을 다시 보내기 때문이다. 이 문제를 어떻게 해결할까? 상품 저장 후에 뷰 템플릿으로 이동하는 것이 아니라, 상품 상세 화면으로 리다이렉트를 호출해주면 된다. @PostMapping("/add") public String addItemV5(Item item) { itemRepository.save(item); return "redirect:/basic/items/" + item.getId(); } 이렇게, POST 요청 후에 Redirect로 GET 요청을 보내는 것이 PRG 패턴이다. 하지만 위 코드에서도 문제가 있다. URL을 인코딩 하지 않고 사..

    EP8. Thymeleaf 타임리프

    타임리프 글을 리뉴얼 했습니다. 아래 내용들이 당연히 포함되어있고 더 자세한 설명과 예시가 있습니다~ 바로 아래링크 누르셔서 보시면 됩니다! 2021.07.26 - [Web/MVC2] - EP1. 타임리프 Thymeleaf EP1. 타임리프 Thymeleaf toc링크기능이 추가가 안되어있어서 필요한 부분은 Ctrl+F 로 찾아서 보시면 됩니다~ 목차 타임리프 사용 선언 텍스트 - text, utext - Escape HTML 엔티티 springEL 표현식 지역변수 선언 기본 객체들 - 편의 ksabs.tistory.com 타임리프 사용선언 속성변경 대부분의 HTML 속성을 th:xxx 로 변경할 수 있다. 변수 표현식 10000 모델에 포함된 값이나, 타임리프 변수로 선언한 값을 조회할 수 있다. 프로..

    [짧] python 엑셀에서 아이디 추출해 메일로 변환하기

    프로젝트 시작 동기 작년부터 스마트스토어에서 영어교재를 판매하고있다. smartstore.naver.com/double00k SL영어교재 : 네이버쇼핑 스마트스토어 SL영어 손필기 판매사이트입니다. smartstore.naver.com 교재를 구매한 학생들에게 변형문제와 유의어등 시험에 도움이 될만한 자료를 추가로 보내주기로 약속했다. 자료는 메일로 보내줄 것이기 때문에 메일 주소가 필요하다. 매일매일 엑셀로 배송명단을 편집하고있는데 여기서 아이디만 추출해 메일로 변환하려 한다. 현재 엑셀은 이렇게 되어있다. 네이버에서 배송명단을 엑셀로 다운받을 때 아이디만 볼 수 있다. 여기서 @naver.com 만 붙이면 바로 메일로 변환된다. 그래서 엑셀에서 아이디를 추출해 메일로 변경하는 작업이 필요하다. 설계 ..

    EP7. HTTP 응답 데이터 처리

    HTTP 응답 데이터를 만드는 방법에는 세가지가 있다. 정적 리소스 뷰 템블릿 사용 HTTP 메세지 사용 정적리소스 웹 브라우저에 정적인 HTML, CSS, JS를 제공할 때는 정적 리소스를 사용한다. 스프링부트 상에서는 src/main/resources/static 위치에 해당하는 부분이다. URL경로 상에서 /index.html /basic/hello-form 으로 접근하면 정적리소스 (src/main/resources/static)에서 해당 경로를 읽는다./p> (참고로 static/index.html 은 자동으로 웰컴페이지로 등록이 된다.) 뷰 템플릿 사용 웹 브라우저에 동적인 HTML 을 제공할 때 뷰 템플릿을 사용한다. 스프링 부트 상에서는 src/main/resources/templates/..