미리 서명된 URL(Pre-signed url) 사용해보기
·
TIL
저번 포스트에서 사용한 코드에서 조금 수정하여서 사용하였으니 저번이미지 업로드 포스트를 참고해주시면 감사하겠습니다 ~2024.11.08 - [TIL] - GCS를 이용한 이미지 업로드 기능 구현Pre-signed url 이란클라우드 스토리지 서비스에서 제공하는 기능으로, 사용자가 생성한 URL을 통해 지정된 시간동안 서버의 자원에접근할 수 있게 해주는 임시 링크이다.  해당 링크를 통해 이미지를 업로드, 다운로드 할 수 있다.다만, url의 정해둔 유효 시간이 지나면 해당 url을 통해 더 이상 접근이 불가능하다. 사용방법구글에 검색을 해봐도 S3를 이용한 케이스들이 대부분이라 아래 링크를 참고해서 구현해봤다. Cloud Storage 도구를 사용한 V4 서명 프로세스  |  Google Cloud의견 ..
GCS를 이용한 이미지 업로드 기능 구현
·
TIL
😀 GCS 이용하게 된 배경이번 프로젝트에서 메뉴를 추가할 때 메뉴의 이미지 파일도 업로드 하는 기능 구현 파트를 맡았다.이미지 업로드 방식에는이미지 , 동영상 등 파일을의 미가공 데이터를 나타내며 2진비트로 저장되는 BLOB 방식WAS나  GCS와 같은 저장소에 이미지 파일을 저장하고 해당 객체의 URI를 DB에 저장하는 방식이렇게 2가지가 있다. 하지만 BLOB 방식 같은 경우에는 데이터베이스의 크기가 빠르게 증가할 우려가 있을 뿐 더러 백업 및 복구작업이 복잡해진다는 단점이있기 때문에 2번째 방법으로 정하였고, 처음에는 유명한? WAS를 이용하기로 했었다.근데 WAS 같은 경우 신규 가입 후 1년동안은 무료로 이용할 수 있지만 이미 가입되어 있던 계정이 1년이 지난 계정이라 다른것을 알아보던중 G..
Todo 프로젝트 리팩토링 하기
·
TIL
1. 현재 문제점현재 Todo프로젝트에서는 토큰에 저장되어있는 유저 정보를 사용하기 위해 각 컨트롤러 마다 아래와 비슷한 코드들이 중복으로 발생하게된다. 무엇보다 각 컨트롤러마다 getUser라는 메서드를 만들기 때문에 만약 내가 request.setAttribute로"user"가 아닌 "users"로 저장하게된다면 각 컨트롤러마다 들어가서 바꿔줘야하는 불편함이 생긴다. 그래서 이 부분을 고쳐보고자 한다. @GetMapping("/myInfo") public ResponseEntity findMyInfo(HttpServletRequest request) { return ResponseEntity.ok(userService.findById(getUser(request))); } ..
JPA - 회원가입 로그인
·
TIL
저번 포스팅에 올렸던  JwtUti를 이용하여 회원가입과 로그인을 구현하였다. 1. 엔티티 생성일정과 일정 담당유저와의 연관관계를 맺으라는 요구사항이 있어 OneToMany를 이용하여 1:N관계를 맺었다.@Entity@Getter@Table(name = "user")@NoArgsConstructor(access = AccessLevel.PROTECTED)public class User extends AuditingDate { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false, unique = true) private String email; @Col..
영속성 컨텍스트
·
TIL
영속성 컨텍스트란?영속성 컨텍스를 쉽게 표현하자면 Entity를 객체를 효율적으로 쉽게 관리하기 위해 만들어진 공간입니다.JPA에서는 테이블과 매핑되는 Entity 객체 정보를 영속성 컨텍스트를 통해 애플리케이션 내에서 오래 지속되도록 보관합니다.영속성 컨텍스트에 접근하여 Entity 객체들을 조작하기 위해서는 EntityManager가 필요합니다. 영속성 컨텍스트 기능1차 캐시쓰기 지연 저장소객체 동일성 보장 1차캐시 영속성 컨텍스트는 내부적으로 캐시 저장소를 가지고 있는데 이를 1차 캐시라고 부릅니다.캐시 저장소는 Map 자료구조 형태로 Key에는 @Id로 매핑한 기본키를,Value에는 Entity 객체를 저장합니다.em.persist(memo); // 메서드 호출 시 memo Entity 객체를 ..
JPA - Entity
·
TIL
EntityEntity란 JPA에서 관리되는 클래스 즉 객체를 의미합니다.데이터베이스와의 상호작용을 위한 매핑 정보도 포함되어있습니다. @EntityJpa가 관리할 수 있도록 테이블과 매핑할 클래스에는 필수로 달아주어야한다. @Entity 어노테이션이 붙은 클래스는 JPA가 관리하게 되며, 이를 엔티티라고 부릅니다.@Entity // JPA가 관리할 수 있는 Entity 클래스 지정public class Memo { ...}name 속성을 이용하여 엔티티 클래스 이름을 지정할 수 있습니다. (default : 클래스 명)@Entity(name = "Memo") // JPA가 관리할 수 있는 Entity 클래스 지정public class Memo { ...}주의사항JPA가 Entity 클래스를 인스턴스화 ..