전체 글
[이커머스 프로젝트] QueryDSL를 통해 상품 검색하기
| 개요 1. Build.Gradle에 QueryDSL과 Jakarta를 함께 주입한다. 2. Config 클래스를 만들어 EntityManager를 생성하고 이를 JpaQueryFactory에 넣어준다. 3. ProductRepositoryCustom과 ProductRepositoryImpl을 만들고, ProductRepostory에서 Custom 인터페이스를 상속한다. | 상세 1. Build.Gradle에 QueryDSL를 추가한다. * Jakarta를 추가하는 이유는, NoClassDefFoundError를 방지하기 위해서이다. * NoClassDefFoundError는 컴파일 시에는 있었는데 실행 시에는 클래스를 찾을 수 없을 때 발생한다고 한다.. QueryDSL를 사용할 때 자주 나타나는 오..
[Redis] 스프링에서 Redis Cache에 Data Crud 하는 방법
1. RedisTemlate을 통해 다양한 형태의 데이터 CRUD하기 https://blog.kingbbode.com/25 Spring Boot에서 Redis 사용하기 Redis란?Remote Dictionary Server의 약자오픈 소스 소프트웨어휘발성이면서 영속성을 가진 key-value 저장소Redis는 NoSQLNoSQL은 데이터 간의 관계를 정의하지 않고 고정된 스키마를 갖지 않는 새로운 형태의 blog.kingbbode.com 2. Json으로 파싱하여 저장, 조회하기 https://velog.io/@kshired/Spring-Redis%EC%97%90%EC%84%9C-%EA%B0%9D%EC%B2%B4-%EC%BA%90%EC%8B%B1%ED%95%98%EA%B8%B0 [Spring] Redi..
[Docker/Redis] Ubuntu에 Redis 설치 & Docker로 Redis 실행
| Redis 설치하기 1. Ubuntu에 Redis 설치 sudo apt-get install redis-server 2. 설치 확인 redis-server --version 3. redis가 6379 포트를 쓰는지 확인 // netstat 없으면 net-tools 설치 sudo apt install net-tools // 6379 포트 쓰는지 확인 netstat -nlpt | grep 6379 tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN - tcp6 0 0 ::1:6379 :::* LISTEN - 4. redis에 접속 후 테스트 // 접속 redis-cli // 테스트 127.0.0.1:6379> set test1 testvalue OK get test1 127.0.0.1..
[AWS] EC2 Ubuntu 서버에 JDK 설치하기
| 개요 - 이번 시간에 한 작업 : 1. EC2 프리티어 계정 만들기 2. Yum 설치하기 3. JDK 설치하기 1. EC2 프리티어 계정 만들기 - 이 부분은 이전에 우분투로 프리티어 계정을 만들어둔게 있어서 그걸 활용했습니다. - 프리티어의 경우 하나의 인스턴스를 실행 시켜둘 수 있는데, 하나를 만들어두었고, 탄력적 IP를 설정해두었어요. 2. EC2 ubuntu에 Yum 설치하기 - 저는 AWS EC2로 우분투 운영체제를 사용합니다. - 리눅스 계열의 운영체제에서 패캐지를 설치하기 위해서는 RPM 또는 YUM을 사용해야 합니다. https://velog.io/@jwpark06/Linux-%ED%8C%A8%ED%82%A4%EC%A7%80-%EC%84%A4%EC%B9%98-%EB%B0%A9%EB%B2..
[JPA] 특정 상황에서 Lazy Fetch Type 변경하기 (@EntityGraph)
| 스프링 부트 Test 중, 아래와 같이 오류가 나타났다. C:\sebinSample\cms\order-api\src\main\java\org\zerobase\cms\order\domain\model\Product.java:33: warning: @Builder will ignore the initializing expression entirely. If you want the initializing expression to serve as default, add @Builder.Default. If it is not supposed to be settable during building, make the field final. private List productItems = new ArrayList..
[JPA] CascadeType : 상위 -> 하위 엔터티 전파 타입
| CascadeType ALL - 상위 엔터티에서 하위 엔터티로 모든 작업을 전파 모두 전파 PERSIST - 상위 엔터티에서 저장을 하면 하위 엔터티도 저장 (영속성 전파) x.persist() 전파 MERGE - 하위 엔터티까지 병합 작업을 지속 ...(?) x.merge() 전파 REMOVE - 하위 엔터티까지 제거 작업을 지속 x.remove() 전파 REFRESH - 하위 엔터티까지 인스턴스 값 새로 고침 (다시 조회) x.refresh() 전파 DETACH - 하위 엔터티까지 엔터티 제거 x.detach() 전파 * persist() 는 리턴값이 없는 insert, merge() 는 리턴값이 없는 update @Transactional public S save(S entity) { if (t..
[이커머스 프로젝트] 이메일 전송 기능 구현 (Mailgun, Feign)
| 절차 1. Mailgun 회원 가입 및 API 사용법 확인 2. Feign 라이브러리를 사용하여, Mailgun의 이메일 전송 Api 호출 3. Test 코드를 작성하여 전송 확인 1. Mailgun 회원가입 및 API 사용 방법 확인하기 [1] 회원가입 [2] 이메일 전송 API 사용 방법 확인 - Post API : 인증키를 헤더로 보내고, 쿼리 스트링으로 발신자/수신자/제목/내용을 보내는 POST API - API KEY를 인증키로 사용 - API base URL 정보에 따라서 이메일을 전송 [3] 테스트용으로 수신을 받을 수 있는 이메일을 추가해둔다. - Mailgun은 무료 계정인 경우에 이렇게 이메일을 추가해두어야만 한다고 한다. | Feign 을 사용하기 [1] 의존성 주입 ext{ se..
[이커머스 프로젝트] Swagger2 적용
| Swagger2 적용하기 [1] 의존성 주입 implementation group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2' implementation group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2' [2] Swagger2 UI 환경 파일 추가 package com.zerobase.cms.user.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentat..