🌿SPRING 37

[SPRING][AWS] 게시글 이미지 업로드하기 (4) - 썸네일 이미지 같이 업로드 하기 (Thumbnailator, Gradle)

더보기 https://doing7.tistory.com/45 [AWS] S3를 Spring에서 사용하기 - 이미지 업로드 [ 버킷 정책 설정 ] 버킷 정책 수정한다. 퍼블릭 엑세스 차단 해제를 하고, 버킷 정책을 설정하는 방법을 사용할 것이다. { "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect":.. doing7.tistory.com https://lifere.tistory.com/entry/Spring-%EC%8D%B8%EB%84%A4%EC%9D%BC-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%83%9D%EC%84%B1?category=479185 [Spring] 썸네일 이미지 생성 [Spri..

[SPRING][JPA] Paging/Pagination - Pageable 객체 받아 사용하기

더보기 https://tecoble.techcourse.co.kr/post/2021-08-15-pageable/ Pageable을 이용한 Pagination을 처리하는 다양한 방법 Spring Data JPA에서 Pageable 를 활용한 Pagination 의 개념과 방법을 알아본다. tecoble.techcourse.co.kr https://tmdrl5779.tistory.com/61 [JPA] Paging JAP Paging DB에 저장된 데이터들을 페이지에 맞춰서 몇개씩 뿌릴건지 알려주는것. DB에 저장된 데이터가 30개라고 한다면 프론트에서 1페이지, 5개 라고 요청을 한다. 그러면 백엔드에서 전체 DB에서 tmdrl5779.tistory.com http://devstory.ibksplatfor..

[SPRING] JWT Exception

더보기 https://beemiel.tistory.com/11 Spring Security JWT 토큰 검증 시 Exception 예외 처리 Spring Security 예외 Spring Security에서 토큰을 검증할 경우, 예외가 발생한다면 기존에 사용 중이던 Custom Exception으로 처리가 될까? 그러면 편하긴 하겠지만 그건 안될 말이지^^ 🙃아니🙃 왜 안되는 beemiel.tistory.com https://velog.io/@hellonayeon/spring-boot-jwt-expire-exception [Spring Boot] JWT 토큰 만료에 대한 예외처리 velog.io 왜 따로 처리해주어야 할까? JWT 토큰의 예외처리는 이전에 만들어 둔 전역 예외처리에 걸리지 않는다. 전역 ..

[SPRING] AOP 예외 처리 / Global Exception Handler 전역 예외 처리

2022.09.01 - [SPRING] - [SPRING] AOP 개념 [SPRING] AOP 개념 참고블로그 우아한테크 유튜브 Aspect Oriented Programming 관점지향프로그래밍 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점에서 나누어서 보고 그 관점을 기준으로 각각 모듈화 하겠다는 것 wearegolden.tistory.com 더보기 https://mangkyu.tistory.com/204 [Spring] 스프링의 다양한 예외 처리 방법(ExceptionHandler, ControllerAdvice 등) 완벽하게 이해하기 - (1/2) 예외 처리는 애플리케이션을 만드는데 매우 중요한 부분을 차지한다. Spring 프레임워크는 매우 다양한 에러 처리 방법을 제공하는데, 어떠한 방법..

[SPRING][JPA] native query 활용하기

패스트 캠퍼스의 강의 [한 번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지]를 보고 정리한 글입니다. 더보기 https://fastcampus.co.kr/courses/203525/clips/ 패스트캠퍼스 온라인 강의 - 초격차 패키지 : 한 번에 끝내는 Java/Spring 웹 개발 마스터 fastcampus.co.kr 사용 방법 및 특징 @Query(nativeQuery = true) 로해주면 사용가능 @Query(value = "select * from book", nativeQuery = true) List findAllCustom(); JPQL과 다르게 entity 속성을 사용하지 못함 Entity 명이 아닌 table 명을 써야함! * 이아니라 속성값을 넣어야 한다면 컬럼명을 ..

[SPRING][JPA] @Query 활용하기

패스트 캠퍼스의 강의 [한 번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지]를 보고 정리한 글입니다. 더보기 https://fastcampus.co.kr/courses/203525/clips/ 패스트캠퍼스 온라인 강의 - 초격차 패키지 : 한 번에 끝내는 Java/Spring 웹 개발 마스터 fastcampus.co.kr @Query란? Query Method 의 커스텀 버전! 일반적으로 @Query까지는 필요가 없으나 2가지의 경우 @Query를 쓰는 게 더 낫다 긴 쿼리메소드의 이름을 가독성이 좋게 수정이 필요한 경우 엔티티 전체가 아닌 필요한 컬럼만 부분적으로 조회가 필요한경우 1. Query Method의 가독성 문제 = Query Method의 이름의 길이가 길 경우 여러가지 조..

[SPRING] 모임 태그 - 태그 수정하기 (2) + bug fix

2022.09.28 - [SPRING/🌱연습[SPRING]] - [SPRING] 모임 생성 시 태그 같이 넣기 [SPRING] 모임 생성 시 태그 같이 넣기 기본 CRUD를 다 만들고나서 태그기능도 있으면 좋을 것 같아서 추가하려다가 삽질을 엄청했다. 쉽게 생각했지만 역시 세상은 녹록치 않았다... 모임 (게시글) 생성 시에 이미 DB에 있는 태그들을 wearegolden.tistory.com 이어서 생성시에 넣었으니 수정 시에 같이 수정도 되어야 한다고 생각했다 일단 생각했던 로직은 1) 기존에 저장된 Tag를 모두 DB에서 지워주고 수정된 태그들만 다시 저장을 해주자! => 로직이 간단해지지만 불필요한 성능낭비 2) 기존에 저장된 Tag와 수정된 Tag를 비교해서 동일한 Tag는 그대로, 기존에는 있..

[SPRING] 모임 태그 - 생성 시 태그 같이 넣기 (1)

기본 CRUD를 다 만들고나서 태그기능도 있으면 좋을 것 같아서 추가하려다가 삽질을 엄청했다. 전에 했던 프로젝트에선 인스타그램에서 처럼 #를 추가해서 그걸로 검색하는 걸 했었는데 그때는 따로 DB에 저장하지 않기 때문에 로직때문에 고생하지않았었다.. 이번에도 괜찮을 줄 알았지만.. 역시 세상은 녹록치 않았다... 모임 (게시글) 생성 시에 이미 DB에 있는 태그들을 선택해서 같이 생성하고 수정 시에 태그도 같이 수정 가능하고 태그에 따라서 검색이 가능한 기능을 만들고 싶었다. 일단은 기본 생성을 만들어 두고, DB Table에 태그 Value 들을 넣어두었다. 그리고 매핑 관계를 보려고 하니.. 모임과 태그는 다대다 관계였다. (erd를 만들때 까지만해도 다대일 이라고 생각했지만 만들다 보니 여러개의 ..

[SPRING][JPA] 다대다 매핑 N:M

참고 블로그 더보기 https://ict-nroo.tistory.com/127 [JPA] @ManyToMany, 다대다[N:M] 관계 다대다[N:M] 실무에선 사용하지 않는 것을 추천한다. 사용하면 안되는 이유를 학습하자. 관계형 데이터베이스는 정규화된 테이블 2개로 다대다 관계를 표현할 수 없다. 연결 테이블(조인 테이블) ict-nroo.tistory.com 다대다 [N:M] 관계형 데이터베이스는 정규화된 테이블 2개로 다대다 관계를 표현할 수 없다. 연결 테이블 (조인 테이블)을 추가해서 일대다, 다대일 관계로 풀어내야한다. 2022.09.14 - [DB/RDBMS] - [RDBMS] 관계형 데이터 모델링 1 [RDBMS] 관계형 데이터 모델링 1 더보기 - 참고한 강의 더보기 참고한 강의 http..

[SPRING] [AWS] 게시글 이미지 업로드 하기 (3) - 이미지 수정,삭제하기 + bug fix

사실 어려운건 업로드가 아니었다... S3 설정만 잘해주면 잘 된다.. S3에 올라간 것도 확인이 되고 url도 잘 뱉어내고.. 문제는 수정! PUT 으로 게시글 전체 수정 메소드를 만든다 게시글 내용 수정 + 이미지 변경 잘됨 게시글 내용 수정 + 이미지 변경 안함 예상 : 게시글 내용만 수정 + 기존 이미지 그대로 결과 : 게시글 내용 수정 + 기존이미지가 아닌 null 값이 들어감. 🧨PUT 이기때문에 그런가? PATCH를 써야하나? 하다가 차라리 메소드를 나누기로 했다! PUT 게시글 내용 수정 메소드 // PUT 게시글 이미지 수정 메소드 어차피 메소드는 세세하게 주면 좋지 않을까..? 이왕 이렇게 된 거 게시글에서 이미지만 삭제하고 싶을 수 있지 않을까? DELETE 게시글 이미지 삭제 메소드..

[SPRING] [AWS] 게시글 이미지 업로드 하기 (2) - 이미지 업로드하기

게시글을 작성 시 이미지를 삽입이 되도록 로직을 짜보자 👀 1.Entity Posting 부분에 이미지를 넣는 게 추가되었으므로 필드도 추가해준다 @Column private String postImg; //게시글 작성시 public Posting(PostingRequestDto postingRequestDto, Member member, String postImg) { this.title = postingRequestDto.getTitle(); this.content = postingRequestDto.getContent(); this.member = member; this.postImg = postImg; this.likes = 0L; } 2.Service 기존에 있던 Create 부분에 사진을 삽입..

[SPRING] [AWS] 게시글 이미지 업로드 하기 (1) - S3 설정하기

이미지 업로드 부분을 계속 미뤄두다가 이젠 정말로 해야할 때가 왔다...... 일단은 개인프로젝트에 먼저 해보고나서 팀과제에 차차 구현해보려고 하는데 정말 어려웠다..........ㅠ aws S3 설정하기 다른 블로그 글을 보면서 설정을 했는데 (나중에 대참사가 일어남) 대충 설정을 하면 안되었다... aws...권한 설정 .. https://artiiicy.tistory.com/16 [AWS] S3 생성하기 + IAM 설정하기 AWS에서 제공하는 인터넷용 스토리지(strage) 서비스인 S3를 생성하고 IAM을 이용하여 리소스들을 안전하게 제어할 수 있도록 설정해보겠습니다. S3란? IAM이란? - S3 : (Simple Storage Service) 아마존에서 artiiicy.tistory.com 👉..

[SPRING] 토글 만들기 (Boolean)

좋아요는 아니고 TodoList에서 완료 체크를 하는 부분을 구현했었다. 이거는 내가 직접 구현했던 터라... 예전에 했던 걸 보면서 확인했는데 훨씬 간결하다 ㅎㅎㅎ.. 1.Entity 설정 To do 항목에 대한 완료 설정으로 딱히 Table로 저장될 필요가 없었다. @Getter @NoArgsConstructor @Entity public class ToDo extends Timestamped { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String title; private String content; private String tag; // boolean 으로 지정 private boolean ..

[SPRING] 좋아요 토글 만들기 (0,1)

계속 미뤄두던 좋아요 토글 ㅎㅎㅎ 사실은 다른 프로젝트하면서 구현은 했으나(boolean) 버튼이름이 좋아요가 아닐 뿐이었다... 어째든 좋아요 토글을 예전에 프로젝트 할 때는 (0,1) 방식으로 구현했던 게 있어서 그걸 한번 해보았다. 많이 어렵지는 않으나 역시 또 까먹을까봐 정리해두기....^^ 1. Entity 설정 @Builder @Getter @AllArgsConstructor @NoArgsConstructor @Entity public class LikePost { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @JoinColumn(name = "member_id", nullable = false) @ManyT..

[SPRING] 클론코딩 장바구니 로직 만들기

이번 프로젝트는 IKEA 클론 코딩이었다. 일주일이라는 시간동안 해내는거라 스코프는 최대한 작게 했다. 그 중에 나는 장바구니 .. 뭔가 특별하게 어려운가? 싶어서 인터넷에서 레퍼코드를 찾아보겠다고 하루를 할애했다.. 실제로 찾기는 했으나 원래 하던 방식이 아니라서 또 멘붕....... 결국에는 그냥 알던대로 하기로 했다 ..^^ㅋㅋㅎ 1. Entity 설정 기획 시 ERD를 설계했던대로 엔티티를 설정해준다. @Getter @NoArgsConstructor @AllArgsConstructor @Entity public class Cart extends Timestamped{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; ..