개발
spring.config.import 설정으로 env 파일을 읽을 때 생길 수 있는 오류
spring: config: import: - optional:file:env/dev-db.env datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: ${DB_URL} username: ${DB_USERNAME} password: ${DB_PASSWORD} jpa: database: mysql database-platform: org.hibernate.dialect.MySQL8Dialect open-in-view: false properties: hibernate: show_sql: true format_sql: true 위와 같이 env 파일을 읽어와서 사용하려고 하였는데 아래와 같은 에러가 발생했다. Caused by: java.lang.Ill..
plugin id: 'org.asciidoctor.convert' version: '2.2.1' was not found in any of the following sources 해결법
Spring Initializr 이용하여서 의존성으로 Spring REST DOCS 를 추가하고 프로젝트를 빌드하였는데 plugin id: 'org.asciidoctor.convert' version: '2.2.1' was not found in any of the following sources 이런 예외가 뜨면서 빌드가 되지 않았다. Gradle 7 부터는 org.asciidoctor.convert 가 아닌 org.asciidoctor.jvm.convert 를 사용해야한다. 참고로 이 플러그인은 adoc 파일 변환, build 디렉토리에 복사하기 위한 역할을 한다. 가장 최신 버전인 3.3.2 버전을 적용해주었다. Spring Initializr 가 왜 옛날 버전을 자동으로 넣어주는걸까
@Modifying 의 flushAutomatically 속성을 명시해야 하는 이유
개요 @Modifying 어노테이션을 사용하다가 생긴 이슈를 해결하며 얻은 지식을 작성해보고자 합니다. 일단 먼저 정답부터 이야기하자면, hibernate 의 FlushModeType 설정의 기본 값인 Auto 일 때, JPQL 실행 전에 모든 쓰기 지연 저장소의 쿼리들이 flush 되는 줄로 잘못 알고 있어서 발생한 이슈입니다. JPQL 실행 전에 쓰기 지연 저장소에 있는 쿼리 중 JPQL 과 관련된 엔티티에 대해서만 flush 합니다. 더 자세한 설명은 아래에서 이어서 하도록 하겠습니다. @Modifying 이란 @Modifying 이 무엇인지부터 먼저 알아보겠습니다. @Modifying 어노테이션은 @Query를 이용하여 INSERT, UPDATE, DELETE쿼리를 작성할 경우 사용해줘야하는 어노..
스케줄링, 배치로 S3 이미지 삭제 처리
개요 현재 제가 진행하고 있는 프로젝트에서는 이미지 삭제를 hard delete 로 처리하고 있습니다. 주문글, 댓글 등 다른 엔티티들은 모두 soft delete로 처리하는데 이미지만 hard delete 를 하고 있는 이유가 무엇일까요? 우선 soft delete를 사용하는 이유는 삭제된 데이터를 복구해야 할 일이 생길 수도 있고, 데이터 자체를 활용하여 추후 기능 개발에 활용할 수도 있기 때문입니다. 즉, 데이터가 서비스의 자산이기 때문입니다. 현재 제 프로젝트에서는 이미지를 독립적인 엔티티로 관리하고 있는데, 이미지를 soft delete 를 해야하는 이유가 크게 없습니다. S3와 같은 스토리지에서는 삭제를 하고 DB 에서는 soft delete 된 상태로 놓아 두는 것은 의미가 없고, S3 에서..
AWS S3 에서 이미지를 관리해보자
우선 S3 에서 자주 사용하는 버킷과 객체라는 간단한 개념에 대해 먼저 알아보고 가겠습니다. 버킷 특징 객체를 저장하고 관리하는 역할 Amazon S3에서 생성되는 최상위의 디렉토리이며, Amazon S3에 저장된 객체의 컨테이너 이다. S3 상의 모든 객체는 버킷에 포함된다. 버킷의 이름은 S3에서 유일해야 한다. 즉, 전세계에 어디에도 중복된 이름이 존재 할 수 없다. 객체 특징 객체는 데이터와 메타 데이터를 구성하고 있는 저장 단위 객체는 키를 통해서 버킷에서 유일한 것으로 식별되고, 버킷에 존재하는 모든 객체는 단 하나의 키를 지닌다. S3 내에서 버킷, 키, 버전 id를 통해서 특정 객체를 파악할 수 있다. S3 서비스를 위한 코드는 정말 간단합니다. 일단 우선 AWS 와 연결을 해주기 위해 아..