본문 바로가기

전체 글

(81)
[Spring Boot] @Transactional 선언적 트랜잭션 [Spring Boot] @Transactional 선언적 트랜잭션 먼저 @Transactional을 사용하기에 앞서 Transaction 에 대해 궁금한 사람은 전에 글에 정리해 놨으니 참고 바란다. [DB] Transaction 이란? Transaction 에 대한 설명과 사용 상황에 대한것은 위에 작성해놨으므로 이 글에서는 생략하도록 하겠다. @Transactional Spring에서 지원하는 선언적 Transaction 으로, xml 혹은 Configuration 을 통해 설정 할 수 있다. Spring Boot 에서는 @Transactional 클래스 혹은 메서드 위에 해당 애노테이션을 선언하는 것으로 사용 할 수 있다. 하지만 수동으로 Configuration을 설정하고 싶은 분은 아래와 같이..
[DB] Transaction 이란? [DB] Transaction 이란? Spring Boot을 공부하면서 @Transactional 선언적 트랜잭션에 대해 공부하고 사용하려고 했다. 그 전에 Transaction에 대한 개념부터 확실히 잡고가고 싶어 찾아보며 공부하고 정리하였다. Spring Boot의 @Transactional 선언적 트랜잭션에 대해서는 이 글 이후에 공부하고 글을 작성하겠다. Transaction 이란? 만약, 어떠한 결제 시스템을 만들었다고 가정을 해보자. 결제 시스템이 아니더라도 동시에 처리되는 시스템을 생각해도 된다 A라는 처리가 진행 된 후 B라는 처리가 진행되어야 된다고 생각을 해보았을 때, 둘다 개발자의 의도대로 진행된다면, 그건 매우 나이스 할것이다. 하지만, 만약의 경우와 사용자가 개발자의 의도에 벗어나..
[Mybatis] 생성한 키(PK) 리턴받기 두가지 방법(selectKey, useGeneratedKeys) [Mybatis] 생성한 키(PK) 리턴받기 두가지 방법(selectKey, useGeneratedKeys) 한 테이블에 insert 할 때 그 PK 값을 Foreign Key로 다른 테이블을 매핑시켜 등록 시키고 싶은 경우가 있다. 예를 들면, 현재 나의 상황처럼 어떠한 상품에 이미지를 등록하는데 그 상품의 PK를 FK로 받아 동시에 DB에 넘겨주고 싶었다. 즉, 그렇게 하려면 생성된 PK를 바로 리턴받아 사용해야 했고 그렇기에 Mybatis의 selectKey, useGeneratedKeys 두 가지 방법을 알게 되었다. 현재 사용하고 있는 DB는 MySql이다. selectKey useGenratedKeys selecyKey selectKey 공식문서 MyBatis has another way to..
[Spring Boot] HttpEntiy, ResponseEntity 란? [Spring Boot] HttpEntity, ResponseEntity 란? 공부를 하던 중 ResponseEntity 를 사용하게 되었다. 그런데 Controller에서 View에 정보를 전송할 때 Http status, header를 조작 할 수 있는 메서드를 제공한다고만 알고 사용했다. 하지만 어떠한 구조로 이루어져 있는지 궁금하기도 해서 ResponseEntity 상위 클래스에 HttpEntity 라는 클래스가 있다는 것을 알게 되었고, 두 클래스 역할과 쓰임세를 알아보려 하였다. HttpEntity HttpEntity 공식문서 public class HttpEntity extends Object Represents an HTTP request or response entity, consisti..
[Spring Boot] Thumbnail 이미지 만들기 (Thumbnailator, Gradle) [Spring Boot] Thumbnail 이미지 만들기 (Thumbnailator, Gradle) 참고 블로그 VamPa 앞선 글에서 파일 업로드에 대해 작성하였다. 이미지 파일을 업로드시 미리 보여지는 이미지 즉, 썸네일은 필요하다. 그 이유는 하나의 페이지에 이미지가 한개라면 문제가 되지 않겠지만 만약 그 하나의 페이지에 수십만개의 이미지가 존재한다면 운영자의 입장에서는 많은 양의 트래픽으로 인해 서버 성능 저하, 많은 서버 비용이 발생 할 수 있고, 이용자의 입장에서는 긴 로딩 시간과 데이터 소모량이 증가하게 된다. 그렇기에 원본 이미지 파일보다 크기를 줄인 이미지를 보여주게 되면 이러한 문제가 해결 가능하다. 썸네일을 만드는 방법은 두가지로 BufferImage 된 이미지 객체를 Graphics..
[Spring Boot] MultipartResolver 파일 업로드 - 2 (Date 폴더 생성, UUID) [Spring Boot] MultipartResolver 파일 업로드 - 2 (Date 폴더 생성, UUID) 참고 블로그 VamPa 한 폴더에 수만개의 파일이 업로드 되었다고 가정을 한다. 그렇다면 한 파일을 찾기위해 많은 파일들을 뒤져야 된다는 문제가 생긴다. 그래서 현제 날짜에 따라 폴더를 생성하고 그 이후 그 폴더에 저장하는 방식을 구현한다. 그리고 만약 동일한 이름의 파일이 저장될 경우 덮어버리는 방식을 방지하기 위해 UUID를 이용하여 파일 이름을 변경해준다. MultipartResolver 를 통한 간단한 파일 업로드 글은 전에 작성하였다. 이 글 또한 나의 공부, 정리 목적이므로 틀리거나 바뀐부분이 있을 수 있다. [Spring Boot] MultipartResolver 파일 업로드 - 1..
[Spring Boot] MultipartResolver 파일 업로드 - 1(Gradle, Ajax) [Spring boot] MultipartResolver 이미지 파일 업로드 참고 블로그 VamPa gradle 라이브러리 추가 Apache Commons-Io 와 Apache Commons Fileupload 라이브러리 두개를 추가해 준다. Apache Commons Fileupload 라이브러리 추가 안했다가 에러나서 혼자 삽질했다... MultipartResolver Bean Creation Exception 해결 implementation 'commons-io:commons-io:2.11.0' /* Apache commons-io */ implementation group: 'commons-fileupload', name: 'commons-fileupload&#..
[Spring Boot] MultipartResolver BeanCreationException, multipartResolver 빈 생성 에러 MultipartResolver BeanCreationException, multipartResolver 빈 생성 에러 Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'multipartResolver' defined in class path resource [com/vam/configuration/WebConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to inst..

728x90
반응형