main project insights

SangYu Lee·2023년 2월 13일
0

codestates backend

목록 보기
29/30
post-thumbnail
데이터베이스 이미지 저장 위치확인 권한

1/11

  1. spring batch 활용방식

    ex) 최근에 떠오르는 ... 랭킹 순으로 정렬하는 것

  2. db index

  3. jpa specification -> 다양한 검색/동적 쿼리

  4. 지도를 이동시켰을때, 지도의 범위가 있는데 그 안에 있는 명소를 전부 보여주고싶다. 이동시킬때마다 쿼리를 날려야 하나? 아니면 지점들만 미리 가지고 있다가 클릭하면 그때 날려야 하나.

  5. 사진 저장방식 - 명소는 따로 클라우드나 다른데서 가져다 스고 post 올릴때만 s3저장해서 사용한다.

1/12

  1. s3 이미지 업로드
참고
  1. 뭔가 오류가 날때는 오타가 없는지 잘 봐라. 특히 nullpointer exception의 경우에는 오타가 나서 데이터가 안들어왔을 수도 있다.
    이번에는 attration으로 적어서 이미지가 들어오지 않았다.

  2. S3의 주소
    1)가상 호스팅 주소
    https://pikcha36.s3.ap-northeast-2.com/images/
    2)경로

  3. git의 민감정보를 sub module로 가리기
    https://my-codinglog.tistory.com/30#check5

1/13

  1. Could not resolve placeholder
    => os 환경변수를 설정했는데 yml파일에서 읽지를 못한다...
    => 환경변수를 설정하고 다시 ide를 실행해야 함

  2. 따로 생성한 attractionImage를 attraction에 매핑하기
    => attractionImage 테이블에 더미를 100개를 만들기

  3. nullpointerException
    => 명소에 이미 사진이 들어있는 경우와 명소에 사진파일이 없는 경우를 모두 생각해서 처리해야 한다.

  4. h2 console unauthorized 에러
    requestMatcher에 h2console을 넣어준다

  5. mapper 어노테이션 java 문
    expression = "java(post.getMember().getMemberId)"

1/16

  1. ResponseDto에 객체 자체를 매핑하면 안된다
    => comment 안에는 member가 있고 member는 post가 있고 post는 comment가 있고 ... 마트료시카가 되어버린다.
  1. @Builder를 클래스 선언부에 직접 달기보다는 생성자를 직접 만들어서 그 위에 @Builder를 붙이는게 낫다.

  2. post요청에 response로 nullpointerException이 뜨는데 이게 왜그럴까
    get 요청에는 제대로 null이 들어간다.

  3. 좋아요 기능을 만들때, 명소가 int로 likes를 따로 가지고 있는게 좋을까 아니면 데이터베이스에서 항상 숫자를 조회해와야할까
    => 매번 조회해 오기보다는 따로 만들어놓고 수동으로 올리는게 성능상 이점이 있다고 판단

  4. front 질문) 좋아요 요청을 페이지를 나갈때 한 번만 요청하게 할 수 있나?
    => 가능하였다.

  5. postPageResponseDto
    responseDto 각자 받아서 구현하기

  6. oauth2 처음 회원가입 때만 토큰 처리, 이미 가입된유저가 로그인하는경우 로직?
    => 똑같다

1/19

  1. argument resolver

  2. 비로그인 회원이 get 요청을 할 경우
    => 핸들러 메서드를 로그인/비로그인 따로 구현하였다

  3. entity에 set을 해주고 update할 필요가 없다.
    => 객체를 엔티티 안의 멤버 변수로 set할 때는 자동 update되지만, 원시 타입을 set한다고 해서 데이터베이스에 update 되지 않는다.

ex) post에 member를 set하면 자동 update되지만, comment를 수정하는 것을 setter로 한다면 직접 update를 날려야 한다.

1/20

  1. get요청을 보낼 때 request body를 보낼 수 없다. requestParam으로 보내야 한다.

리소스의 정보를 요청하는 것은 GET 요청이다.
그런데 GET요청에도 정보를 담아야할 경우가 있다.
보통은 requestParam으로 정보를 담아서 보내는데
만약 requestParam에 안담기거나 정보가 너무 많다면?

=> 서울의 여러 명소들이 있다. 이 명소들은 강남, 강동, 성동 등 지역"구"로 나뉘어져 있는데, 원하는 지역구만 선택해서 명소 정보를 받고 싶다. 어떻게 요청을 보내야 할까?

<Post 요청>

{
	provinces:["강남구", "성동구", "노원구"]
}

Post 요청으로 requestBody에 원하는 지역구 정보를 담아서 보낸다. 그러면 서버에서 지역구를 지역 id에 매핑시키고, 데이터베이스에서 원하는 정보를 조회한 다음 응답으로 돌려준다.

1/22

nullpointerException

public class RequestDto {
	List<String> hashTags
	List<MultipartFile> files
}

두개를 가지는 request Dto 클래스가 있을 때,
hashTags와 files가 없어도 nullpointerException이 안나게 하려면

dto.getHashTags().size() != 0
이 조건이 아니고
dto.getHashTags() != null
의 조건을 걸어야 한다.

이미 없는 리스트의 사이즈는 조회할 수 없기 때문에 NPE가 발생하였다.

1/23

  1. UncheckedIOException - Cannot Delete ~.tmp
    multiparfile의 inputstream 메서드를 사용하고 난 후, appdata/local/temp 에 있는 tomcat 임시 파일들을 삭제하지 못하는 오류.

=> 처음에는 임시 파일들을 담고 있는 폴더에 권한도 부여하고, 인텔리제이를 관리자 권한으로 실행해보았지만 해결되지 않았다. 내가 직접 임시파일들을 삭제하면 처음 한 번은 잘 작동하지만, 다시 inputstream 메서드를 통해 이미지를 받고 핸들러 메서드가 동작하면 오류가 발생하였다.

윈도우와 스프링부트 버전 문제라고 해서 스프링부트 버전을 낮췄다.
2.7.8 -> 2.7.7 똑같음
2.7.7 -> 3.0.1 똑같음
3.0.1 -> 2.4.7 security method가 동작이 안됨
2.4.7 -> 2.7.6 해결되었음

=> 가끔 이런 어이없는 오류가 나는데, 항상 오류가 내 잘못이라는 고정관념을 버리고 컴퓨터를 탓할 줄도 아는 유연한 사람이 되어야겠다

1/25

  1. handler 에서 cookie 증발 문제
    => jwtVerificationfilter에서 shouldnotFilter에
    토큰 받아오는 url 추가

  2. 명소 이름, 명소 주소 좋아요 수, 좋아요 여부, 즐겨찾기 수, 즐겨찾기 여부, post id, postImage

  3. 검색창에서 검색했을 때 이름에 들어가는 api

1/27

  1. hashtag를 delete 했으나 delete 되지 않았다.
    => post에 종속되어있기 때문에 부모 엔티티에 변화가 없다면 delete되지 않는다.

=> deleteById를 통해 시도는 실패

=> post에서 orphanremove 옵션으로 시도 => 성공

https://baek-kim-dev.site/253

profile
아이스커피

0개의 댓글