[DEV] 기록 165

[SpringBoot] 컴파일 후 data.sql 오류가 발생할 경우

개요 ddl-auto를 create-drop으로 설정했기 때문에 resources 폴더 하위에 data.sql 파일을 생성하여 초기 데이터 값을 넣도록 설정했습니다. 위와 같이 설정했을 때 SpringBoot 2.4.X 버전에서는 정상적으로 작동했지만 2.5.0 버전 이상부터는 오류가 발생하여 찾아보니 application.properties 혹은 application.yml에 추가적인 설정이 필요했습니다. 문제 원인 SpringBoot 2.5.0 버전부터는 hibernate 초기화 과정보다 data.sql이 먼저 실행되어 문제가 발생했습니다. 해결 방법 application.yml 혹은 application.properties에 아래 내용 추가하면 됩니다. spring.jpa.defer-datasour..

[DEV] 기록 2022.05.02

[SpringBoot] html form에서 put/delete 메서드 호출하는 방법

개요 기본적으로 html form에서는 get 혹은 post 메서드만 지원합니다. 저는 delete 메서드를 호출하고 싶었기 때문에 찾아보는 와중 application.properties 혹은 application.yml에 설정을 추가하면 get/post 외 다른 HTTP 메서드도 호출할 수 있다는 것을 알 수 있었습니다. 해결 방법 application.yml 혹은 application.properties에 아래의 내용을 추가하면 됩니다. spring.mvc.hiddenmethod.filter.enabled=true thymeleaf form 예시 참고 https://okky.kr/article/653529 OKKY | [해결] SpringBoot 2.2 HttpHiddenMethodFilter 에러 ..

[DEV] 기록 2022.04.29

[SXSSFWorkbook] 엑셀 드롭다운 셀 생성하는 방법

개요 기존에 Excel 생성 및 다운로드 관련 게시글을 여럿 공유했었습니다. https://jaimemin.tistory.com/2069 [SpringBoot] 대용량 엑셀 파일 생성 및 다운로드 삽질기 개요 작년에 이어 올해도 엑셀 파일 생성 및 다운로드 기능을 담당하게 되었습니다. https://jaimemin.tistory.com/1889 [SpringBoot] 대용량 엑셀 다운로드를 위한 SXSSFWorkbook 개요 기존에 Excel 생성 및 다운.. jaimemin.tistory.com https://jaimemin.tistory.com/1889 [SpringBoot] 대용량 엑셀 다운로드를 위한 SXSSFWorkbook 개요 기존에 Excel 생성 및 다운로드 기능을 구현하는 코드를 공유했었..

[DEV] 기록 2022.04.20

[SpringBoot + MyBatis] TypeHandler 통해 JSON List varchar로 저장

개요 api 응답으로 json list가 오는데 이를 MariaDB varchar형 칼럼에 저장하려고 하니 원하는 대로 안됐습니다. 열심히 검색한 결과 이를 위해서는 커스텀 TypeHandler를 정의해야했고 TypeHandler를 적절히 구현하면 JSON 형태의 문자열을 그대로 DB에 저장하고 조회할 수 있었습니다. 저는 keichee님 블로그를 보고 위 문제를 해결할 수 있었으며 하기 내용도 keichee님이 작성하신 내용과 거의 동일하므로 해당 블로그를 방문하시는 것을 추천드립니다! 1. DTO 구조 DTO 구조를 보면 ExampleWrapper 클래스가 ExampleJson 배열을 필드로 두고 있고 여기서 ExampleJson 클래스가 json 형태로 DB에 저장될 정보입니다. 2. TypeHan..

[DEV] 기록 2022.04.13

[SpringBoot] 여러 파일을 .zip 파일로 압축해서 다운로드

개요 UI 기획서 요구사항 중 하나가 서버에서 NAS에 저장된 tar.gz 파일과 서버에서 생성한 json 파일을 zip 파일로 압축해서 다운로드하는 기능이었습니다. 따라서 제가 구현한 기능이 정상적으로 작동하는지 확인하기 위해 tar.gz 파일 생성하는 코드, json 파일을 생성하는 코드, 그리고 이 둘을 압축하여 클라이언트로 내려주는 Controller를 구현해봤습니다. 소스 코드 tar.gz 생성하는 샘플 코드 json 파일을 생성하는 샘플 코드 이 둘을 압축하는 컨트롤러 클라이언트 측 다운로드하는 함수 참고 https://simplesolution.dev/spring-boot-download-multiple-files-as-zip-file/ Spring Boot Download Multiple ..

[DEV] 기록 2022.04.12

[SpringBoot + JPA] @NamedEntityGraph

개요 현재 프로젝트 내 JPA 글로벌 Fetch 타입은 Lazy이지만 특정 페이지에서는 연관관계가 있는 객체들을 모두 불러와야 하는 경우가 있어 Lazy Loading으로 N번 쿼리를 호출하는 것보다 한 번에 가져오는 것이 성능이 좋을 것이라고 판단했습니다. 찾아본 결과 @NamedEntityGraph 어노테이션을 사용하면 특정 JPA 쿼리에 대해 커스텀 Fetch 타입을 정의할 수 있다는 것을 알았고 저는 위 문제를 해당 어노테이션을 통해 해결했습니다. 예제 Example.class Example.class와 연관된 엔티티가 3개 있다고 가정 @OneToMany, @ManyToMany 연관관계는 디폴트 Fetch 타입이 Lazy 특정 페이지에서는 해당 엔티티들의 정보가 모두 필요하므로 Lazy Load..

[DEV] 기록 2022.04.10

[SpringBoot] git에 application.properties 안 올리는 방법

개요 구글 SMTP 설정 정보를 실수로 github에 올리니 GitGuardian에서 보안 알림 메일이 엄청 왔습니다. 이런 민감 설정 정보는 github에 올리지 않도록 .gitignore 파일에 설정해야 하는데 비교적 간단하므로 짧게 소개하겠습니다. 해결 방법 우선, git에 올리고 싶지 않은 민감 정보들만 별도로 설정하는 properties를 생성해줍니다. 이후 Edit Configurations > Active profiles에 security와 함께 원하는 profile 추가 * SpringBoot 2.4 버전부터 properties에 active profile이 설정된 상태에서 spring.profiles.include를 통해 profile 추가하는 방법이 막혔습니다. * https://spr..

[DEV] 기록 2022.04.10

[PostgreSQL] PostgreSQL 비밀번호 잊어버렸을 경우

개요 PostgreSQL 13을 신규 설치하고 pgAdmin4에 접속한 후 PostgreSQL 13 서버를 접근하려는데 설정하지도 않은 비밀번호를 입력하라고 해서 문제가 발생했습니다. stackoverflow에 검색한 결과 아이디와 똑같이 비밀번호도 postgres라는 사람들도 있고 admin이라는 사람들도 있었지만 이 둘 모두 실패했습니다. 그래서 한글로 검색해보니 Bulbasaur님이 잘 정리해주신 글이 있어 해결할 수 있었습니다. 감사합니다. 해결 방법 우선, PostgreSQL의 설정 파일인 pg_hba.conf 파일을 열어야 하는데 이는 윈도 기준으로 아래 경로에 존재합니다. C:\Program Files\PostgreSQL\13\data\pg_hba.conf 저는 해당 파일을 워드패드를 통해 ..

[DEV] 기록 2022.04.09