Project & Issu 10

마이그레이션

마이그레이션 시 생각 못 했던 사항을 정리  - 마이그레이션 할 데이터 조회시 ID로 ORDER BY를 해준다.    -> 어디까지 완료된건지, 문제가 어디서 터진건지 확인 가능    -> 마이그레이션 할 데이터 조회 시점 이후에 추가된 데이터가 있는 경우 추가로 작업하기 편하다. - 마이그레이션 쿼리를 PL SQL로 하는 경우 에외나 문제 포인트에 ROLLBACK 처리를 해준다.    ->  DB 툴에서 설정해놓은 대로 ROLLBACK 되는 경우가 있는데,  툴에 의존하지 않고 ROLLBACK 할 수 있도록 예외 처리 코드를 넣어줘야 한다. 개발서버에서 DBEAVER로 PL SQL을 돌려봤는데, 에러가 발생했을 때 전체가 다 ROLLBACK 돼서 PL SQL 전체에 대해서 TRANSACTION이 잡힌다..

Project & Issu 2024.06.18

feign client 버그 - java.lang.IllegalArgumentException: name is required

- 원인 : feign client로 통신할 때 파라미터 값에 (@RequestParameter String name ) '&'이 포함되어있으면 발생 - 해결 : @RequestBody를 사용해서 값을 넘겨준다. package com.....; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.data.domain.Page; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.anno..

Project & Issu 2024.02.29

csv 파일 인코딩 문제

1.한글 문제 [문제] UTF-8로 인코딩해서 CVC 파일 출력 시 한글이 깨지는 문제 [해결] Microsoft Office EXCEL.exe 프로그램으로 csv 파일을 실행했을 때 'ANSI'라는 인코딩 방식으로 자동 인식한다. 'UTF-8'로 인코딩 된 파일을 'ANSI'로 읽으면 한글이 깨진다. 따라서 MS949로 인코딩 해서 출력한다. private void download(String pathFileNamee, resultList) { try (CSVPrinter csvPrinter = new CSVPrinter( new BufferedWriter( new OutputStreamWriter( new FileOutputStream(pathFileName, true), "MS949"/*Standa..

Project & Issu 2024.01.05

좋아요 기능 동시성 처리

요약 : 좋아요 service에 redis 분산 락 처리를 하여 동시성 테스트 완료 1차 커밋 : feat : 좋아요 기능 추가(redis를 사용한 동시성 처리, queryDSL 사용), board test code 추가 · jeoningu/Springboot-JPA-Blog@3726ea1 (github.com) 1. 좋아요 service 멀티쓰레드 동작시 갱신손실 문제 동시성 처리를 해주지 않으면 좋아요 service를 테스트 코드에서 멀티쓰레드로 동작시켰을 때 동시성 테스트에 통과하지 못 합니다. 동시성 테스트를 해봤을 때 아래 로그에서 볼 수 있듯이 여러 쓰레드로 한 자원에 대해서 update를 하려고 할 때 이전 쓰레드에서 update를 하기 전 값을 select함으로써 이전 쓰레드에서 updat..

Project & Issu 2023.05.04

게시판 개인 프로젝트 JPA 이슈 해결 - N+1, LazyInitializationException

서론 JPA를 사용하면 연관관계를 갖는 엔티티에 의해 N+1 문제가 생긴다고 하던데, 게시판 개인 프로젝트에서도 게시물 목록을 조회 시 N+1 문제가 발생했다. 추가적으로 연관관계에서 성능을 위해 FetchType을 EAGER 보단 LAZY로 변경하는 걸 권장하길래 글 엔티티와 댓글 엔티티 연관관계에서 FetchType을 LAZY로 변경했더니 게시글 글 조회 시 LazyInitializationException 으로 인한 500Error가 발생했다. 위 2가지 문제 상황에 대해서 해결해보자. "배운점 선 요약"에서 주요 학습 내용 요약을 보고 "버그 내용", "처리 내용 및 결과"의 상단 부분을 보면 된다. 자세한 내용은 ""에 작성하였다. 게시판 개인 프로젝트에서 소스 참조 : https://githu..

Project & Issu 2023.05.02

토이 프로젝트에 적용할 기능, 기술에 대한 기록 - 알림 기능, 요청에 대한 이력 적재 기능, maven -> gradle

두서 없이 작성 중. 아직 정리가 안 되어 있는 상태. 작성 배경 프로젝트에 적용할 기능, 기술에 대한 기록용 정리 하면서 작성하는게 아니라 일단 기록하기 위해 작성 기능목록 1. 알림 기능 2. 요청에 대한 이력 적재 기능 3. Maven vs Gradle 4. jpa n+1 문제 해결 프로젝트 주소 jeoningu/Springboot-JPA-Blog (github.com) 서론 - 알림 기능을 구현해보려 하는데, 어떻게 구현해야 할지 정리가 필요하고 관련된 내용들도 추가적으로 학습해서 정리해보려 한다. - Runnable, BlockingQueue로 구현된 기능에 대해서 작업한 적이 있는데, 알림 개발시에 참고할 수 있을 거 같아서 우선 이것들을 학습해보려고 한다. 학습하기 위해 참고할 블로그 목록을..

Project & Issu 2023.03.27

JWT 연습

Json Web Token 스프링 시큐리티 공부 18 - JWT (Json Web Token) (tistory.com) JWT 자바 가이드. 이 글은 OAuth와 JSON Web Token과 같은 토큰 기반의… | by Out of Bedlam | Medium server: port: 8080 servlet: context-path: / encoding: charset: UTF-8 enabled: true force: true spring: datasource: # h2 연결용 DB 정보 driver-class-name: org.h2.Driver # Database를 H2로 사용하겠다. # url: jdbc:h2:~/test # H2 접속 정보 # url: jdbc:h2:tcp://localhost/~/..

Project & Issu 2023.02.10

springboot-blog

도움 : https://getinthere.tistory.com/17 [spring boot settings] Spring Boot 2.7.6 langauge : java Type : maven Packaging : jar Name : blog Group : com.jig Java version : 11 Dependency - Spring Boot DevTools // 파일 변경하면 자동 재시작 해준다. - Lombok - Spring Data JPA - MySQL Driver - Spring Security // 보안 관련 - Spring Web // WEB MVC를 사용하여 웹 애플리케이션을 만드는데 필요한 스프링 부투의 기본적인 요소 ( 애노테이션 ) // 내장형 컨테이너로 톰켓을 기본 탑재함 De..

Project & Issu 2022.12.15