팀프로젝트일기(12)
-
SCHOOLPICKS - Querydsl 도입
[ 문제 상황 ] SCHOOLPICKS라는 교내 프로젝트를 하며 Service과 Repository 계층의 코드 작성을 담당했었다. 당시 버그가 가장 많이 났었던 부분은 맛집 검색을 위한 동적 쿼리를 작성하는 부분이었다. 아래의 그림을 보면 우측 상단에는 학교 캠퍼스를 선택하는 버튼이 있었고 이는 반드시 둘 중 하나가 들어왔다. 그리고 중앙 부분에는 음식점, 카페, 술집이 0개부터 3개까지 전부 들어올 수 있었다. 그리고 가격도 설정한 범위의 값이 들어왔었다. 이걸 해결하려고 검색 조건을 jpql로 동적으로 짜려고 했었다. 아래의 코드를 보면 알 수 있는데, 처음으로 짜보는 동적 쿼리이고 JPQL로 짜다보니 다음과 같은 코드가 나왔다. shopTypes가 0개부터 3개이니 해당 값마다 케이스 별로 나누어..
2024.03.06 -
SKKUNION - SpringSecurity 설명 2
구현과 관련해서 아셔야 될 것 같아서 구현과 관련된 부분은 UserInfoController에 가시면 확인할 수 있습니다. 설명을 드리면 아래와 같아요. 공통 함수 예시가 하나 필요할 것 같아서 제일 기본인 userInformation를 관리하는 API를 가져왔습니다. @PostMapping("/UserInfo/userInfo") public ResponseEntity UserInfo(@RequestHeader("AccessToken") String accessToken , @RequestHeader(value = "refreshToken", required = false) String refreshToken){ // 모든 코드에 이거 복붙해서 아래 부분 return만 한 줄 본인이 넣으실거 추가하시면 ..
2023.11.05 -
SKKUNION - 프로젝트 과정에서 예상되는 오류 설명 1
오류 해결 1 AccessToken에서 UserEmail 정보를 가지고 올 수 있는데 그거로 Users를 받아오고 userTag 목록으로 가져오는 걸 findByUserEmail 같은 방식으로 가져와버리시면 문제가 userTag를 가져오고 싶을 때에 문제가 일어나요. 오류가 아마 LazyInitializationException이라고 뜨면서 에러가 날텐데 아마 동아리 정보에서 UnionTag 가져올 때도 싹 다 LAZY로 지금 우선 해둬서 똑같은 문제가 일어날 수 있거든요?? public ResponseEntity getUserInfomation(String AccessToken){ // 1. Access Token 에서 User email 을 가져옵니다. Authentication authenticat..
2023.11.03 -
SKKUNION - SpringSecurity 설명 1
글을 오랜만에 쓰는데, Security 설정대로 사용하시려면 4가지 파일을 정확하게 이해하고 계시면 편합니다! security 폴더 내부에 있는 WebSecurityConfig, SecurityUtil랑 jwt 폴더 내부에 있는 JwtTokenProvide, service 폴더 내부에 있는 CustomUserDetailService를 아시면 편합니다! WebSecurityConfig 여기를 아는 게 제일 중요할 것 같아요. 왜 본인이 잘하시다가 Postman으로 Request를 보냈는데 400 뜨는 경우에 뭔 원인인지 모르실 때 이 부분을 체크해주세요. 아래를 보시면 antMatchers라는 부분으로 경로와 permitAll 같은 게 있는데 이 말은 이 프로젝트로 만들어진 서버의 응답에서 해당 경로로 오..
2023.11.03 -
SKKUNION - 데이터를 한 번 뽑아보자!
JPA 자동생성 DATA 뽑는 방식 JpaRepository를 extends하면 자동생성 DATA를 뽑을 수 있습니다..! 우선 딱 두 개의 엔티티와 Repository의 코드부터 보면 이해가 쉬우니 해당 부분부터 살펴보시면 될 것 같습니다. User 엔티티 @Data @Builder @Entity @AllArgsConstructor // constructor 생성 @NoArgsConstructor // getter, setter 생성 public class User { // 혹시나 나중에 수정할지도 몰라서 전혀 관련이 없는 DB 자체 내부 설정값을 PK로 두겠습니다. // 다른 Table에서도 id를 사용할 예정이니까. 얘만 이름을 따로 설정할게요. @Id @GeneratedValue @Column(n..
2023.10.08 -
School Picks - Weekly Demo Feedback2
어제 오늘 한 일 수업으로 듣는 컴퓨터 네트워크 과제를 하면서 시간이 날 때마다 데이터에 넣을 가게도 생각해보고 어떻게 해야지 편할까에 대해서 고민을 많이 해봤었다. 사실 해당 에브리타임 게시글에 왜 사람들이 많이 사용했을까에 대해서 고민을 해본 결과, 들어가서 버튼만 누르면 1개의 가게를 바로 보여주기 때문이다. 그래서 고민해본 결과 최대한 유저가 선택하는 태그는 빼야겠다는 생각이 들었다. 딱 유저가 선택할 수 있는 건 몇 명이서 갈거야? 그리고 가격이 얼마였으면 좋겠어?로 해놨다. 그마저도 귀찮으면 혼밥에 가격은 5000원에서 2만원 사이로 default로 놔두기로 했다. 대략적인 화면구성 React로 화면 구성을 다음과 같이 했다. HTML이랑 CSS좀 배워놓을 걸 싶은 순간이었다... 그냥 HTM..
2023.10.08