전체 글70 2023. 05. 29 ~ 06. 04 WIL 실전프로젝트를 진행하며 본인이 담당했던 기능 정리 [Store] 1. 약국 전체보기 (현재 사용 안 됨) 2. 약국 상세보기 3. 약국 검색하기 4. 외국어 가능 약국 상세보기 5. 외국어 가능 약국 검색하기 6. 검색 기능 페이지네이션 [Bookmark] 1. 북마크 누르기 2. 북마크 조회 [Member] 1. 유저 닉네임 변경 2. 유저 임시 비밀번호 지급 3. 유저 비밀번호 변경 4. 프로필 이미지 업로드 (s3 사용) 5. 회원가입 시 이메일 인증 (smtp 사용) 6. 인증번호 검사 [기타] 1. 데이터 db에 저장 - 1. 공공 api 이용해서 약국 정보 db에 저장 - 2. 공공 api 이용해서 외국어 가능 약국 컬럼 db에 추가 ( poi 사용) 2. 테스트 코드 (진행 중) 3. n+1.. 2023. 6. 25. 2023. 05. 22 ~ 05. 28. WIL 이번주는 꽤 힘들었다. 일정이 바쁘거나 소화해야 할 일들이 거대하고 어려운 것도 아니었지만 스스로 느끼기에 힘들었다. 팀에 도움이 안 되는 건 아닐까 하고 불안해질 때가 있다. 부리더로서의 책임감과 원하던 만큼의 성과를 내지 못 하면 불안함이 점점 커진다. 가은 기술 매니저님께서 실전 프로젝트를 들어가기 전 날 밤에 이 때가 가장 지칠 때라고 얘기 해 주셨던 게 생각이 났다. 온보딩 때부터 쉼 없이 달려오며 뒤로 갈수록 높은 집중력을 요하지만 뒤로 갈수록 집중력이 약해지는 걸 느낀다. 번아웃과 같은 거창한 단어를 붙일만 하다 느끼진 않았지만 이번주는 지친다는 감정이 지금까지 중 가장 강하게 느껴진 것 같다. 사람들과 모여 무언갈 진행할 때마다 비교를 피할 순 없다. 다른 사람이 하루만에 구현할 수 있을 .. 2023. 5. 29. 스프링 N+1 문제 해결, 쿼리 최적화 문제 상황 get 메서드를 이용해 보드entity를 불러올 때마다 연관관계에 있는 멤버entity까지 조회하는 쿼리가 사용됨 (흔히들 말하는 N+1 문제) 문제 쿼리 N+1 문제란? 연관 관계에로 인해 발생하는 이슈로 연관 관계가 설정된 엔티티를 조회할 경우, 조회된 데이터 갯수(n) 만큼 연관관계의 조회 쿼리가 추가로 발생하여 데이터를 읽어오게 됨. 이를 N+1 문제라고 함. N+1 문제 발생 이유 jpaRepository에 정의한 인터페이스 메서드를 실행하면 JPA는 메서드 이름을 분석해서 JPQL을 생성하여 실행하게 됨. JPQL은 SQL을 추상화한 객체지향 쿼리 언어로서 특정 SQL에 종속되지 않고 엔티티 객체와 필드 이름을 가지고 쿼리를 생성. -> JPQL은 findAll()이란 메소드를 수행.. 2023. 5. 18. 2023. 05. 08 ~ 14 WIL 이번주에 미니 프로젝트를 끝내고 다시 클론 프로젝트에 들어갔다. 프로젝트를 처음 하 보는 입장에서 쏟아지듯이 프로젝트를 하게 되는 것이 걱정스럽기는 하지만 항해의 9 to 9을 하다보면 적응 했듯이 프로젝트에도 적응할 수 있을 할 것이라 기대하고 있다. 프론트엔드와 협업을 하는 과정에서 프로젝트의 전체적인 흐름을 파악하려고 노력하게 되는 것 같다. 프로젝트를 하면서 항상 내 역할에 대해 생각하게 된다. 아무도 배정 해 주지 않는 나의 역할을 고민하가 보면 결국 내가 할 일은 내가 만든다는 걸 느끼게 된다. 일을 찾아서 하고 알아서 공부하는 것이 꽤 중요한 덕목이 아닐까 하는 생각을 가지게 되었다. 대체불가한 인력이 되고 싶은 건 모두의 생각이겠지만 거의 불가능한 지금은 그래도 없는 것보단 나은 사람이 되.. 2023. 5. 14. 2023. 05. 01 ~ 07 WIL - CORS CORS란? Cross-Origin Resource Sharing 약자 브라우저에서는 보안적인 이유로 cross-origin HTTP 요청들을 제한한다. 그래서 cross-origin 요청을 하려면 서버의 동의가 필요합니다. 만약 서버가 동의한다면 브라우저에서는 요청을 허락하고, 동의하지 않는다면 브라우저에서 거절한다. 이러한 허락을 구하고 거절하는 메커니즘을 HTTP-header를 이용해서 가능한데, 이것을 CORS(Cross-Origin Resource Sharing)라고 한다. 그래서 브라우저에서 cross-origin 요청을 안전하게 할 수 있도록 하는 메커니즘이다. cross-origin cross-origin이란 다음 중 한 가지라도 다른 경우를 말한다. 프로토콜 - http와 https는 프.. 2023. 5. 8. [스프링] 객체 연관관계 매핑 보통의 RDB에서는 관계에 있어 방향을 따지지 않는다. 관계를 맺을 때 사용하는 외래키(Foreign Key) 만으로 두 테이블은 서로 양방향으로 접근이 가능하기 때문. 하지만 객체의 경우 자신이 갖고 있지 않은 참조에 대해 접근할 수 있는 방법이 없기 때문에 @ManyToOne , @OneToMany 등으로 관계를 매핑한다 하더라도 반대쪽 객체에서는 접근이 불가능 함. -> 연관관계에 방향이 생겨나고 객체의 연관관계가 복잡해진 이유 연관관계를 사용하는 이유를 한 마디로 축약하자면 객체 간의 관계를 정말 테이블처럼 하기 위한 목적 이라고 할 수 있다. 1. 다대다와 일대다(단방향)는 거의 사용하지 않는다. 2. 객체는 참조를 통해서만 다른 객체를 조회할 수 있다. 따라서, 객체의 참.. 2023. 5. 3. 이전 1 2 3 4 5 6 ··· 12 다음