fetchResult (deprecated) 이전까지의 페이징 방법중 하나는 fetchCount()와 fetchResult()를 이용하는 방법이였다.하지만 이는 단순히 count 처리하는 용도이기 때문에 QueryDSL에서는 이를 지원하지 않기로 결정했다고 한다.따라서 count와 result를 더 효율적으로 이용하는 방법을 사용하자.List content = queryFactory .select( new QMemberTeamDto( member.id.as("memberId"), member.username, member.age, team.id..
UserRepository는 JPARepository 와 UserRepositoryCustome(DSL)을 인터페이스화한다 그리곤 UserRepositoryCustome 를 구현해줄 UserRepositoryCustomeImpl class를 만들어 DSL을 구현하면 된다.
Spring Data Jpa JPA는 Java 오브젝트를 관계형 데이터베이스에 매핑하는 Java 표준입니다. JPA는 개발자가 데이터베이스에 데이터를 저장, 조회, 업데이트, 삭제하기 위해 SQL을 작성할 필요없이, 객체를 조작하는 것만으로 데이터베이스에 저장, 조회, 업데이트, 삭제를 수행할 수 있게 합니다. 우리에겐 복잡한 Entity의 멤버종류가 많거나 join대상이 많아지는 경우, 최적화작업을 위해 3가지 방법을 사용할 수 있다 !! 1. @Query어노테이션 2. JPA Criteria Query 3. Query DSL · 장점 - 필요한 데이터만 선별하여 가져오거나 복잡한 Join 쿼리를 생성할 수 있습니다. 🌞최적화에 무조건 필요한 작업🌞 · 단점 - JPA의 1차 캐시를 활용할 수 없습니..
합집합(정제된), UNION UNION은 합집합 연산. 사용할 컬럼의 수와 데이터 형식이 일치해야 하며, 합친 후 '중복 제거'한다. SELECT * FROM (테이블1) UNION SELECT * FROM (테이블2); 합집합(정제하지 않는), UNION ALL 정렬하지 않고 중복 제거 하지않는다. ( 정제하지 않음) SELECT * FROM (테이블1) UNION ALL SELECT * FROM (테이블2); 교집합(정제된), INTERSECT 두 개의 테이블에 대해 겹치는 부분을 추출하는 연산이다. 추출 후 '중복 제거' 하여 보여준다. SELECT COL1, COL2 FROM A INTERSECT SELECT COL1, COL2 FROM B INTERSECT 명령어는 Oracle DB, Maria..
학습을 하던중 암호화 되어있는 jwt토큰을 헤더에 노출하게 배웠는데, 이건 아무래도 위험하다고 생각되어 알아보던 중, ( 어세스토큰 ? 리프레시 토큰 ? ) 어세스 토큰을 빠르게 만료 시키고, 리프레쉬토큰으로 만료된 어세스토큰을 체크해서, 서버 디비에 저장되어있는 리프레쉬토큰과 비교 후 , 재발급 해주는 과정을 거치면 된다. 그러나 리프레쉬토큰 마저 탈취, 조작 당하게 되면 엄청나게 큰일 !! 그래서 리프레쉬 토큰의 보안은 철저하게 해주어야 한다고 판단되어 쿠키에 저장 하는 방법을 선택 했다. (쿠키는 여러가지 보안 옵션을 할 수 있기 때문에) 이것을 알아보려면 여기로 ... 우선 어세스 토큰과 리프레쉬 토큰을 만들어주자 ! 만드는법은 jwt 토큰을 이용하여 기간이 짧은 토큰1(어세스토큰) - [사용자의..
쿠키란 ? 쿠키는 유저들의 효율적이고 안전한 웹 사용을 보장하기 위하여 웹사이트에 널리 사용되고 있다. 쿠키는 웹사이트 접속시 접속자의 개인장치에 다운로드 되고 브라우저에 저장되는 작은 텍스트 파일입니다. 웹사이트는 쿠키를 통해 접속자의 장치를 인식하고, 접속자의 설정과 과거 이용내역에 대한 일부 데이터를 저장한다. 쿠키를 사용하는 이유는 ? 필수적인 쿠키: 필수적인 쿠키는 페이지 탐색, 웹사이트의 보안영역 접속, 그리고 검색을 포함한 웹사이트의 기본적인 기능의 활성화를 목적으로 사용되고 있다. 본 웹사이트는 필수적인 쿠키 없이 최적화된 기능 수행이 불가하므로 본 쿠키는 이용자의 별도 동의 없이 활성화 되고 있다. 기능 쿠키: 기능 쿠키는 웹사이트가 접속자의 지역 및 언어 등 웹사이트의 행태 및 외관에 ..
Access Token과 Refresh Token 어세스 토큰 (AccessToken)? 어세스 토큰은 접근/인증에 관여하는 토큰 리프레시 토큰 (Refresh Token)? 리프레시 토큰은 재발급에 관여하는 토큰 JWT는 발급한 후, 삭제가 불가능하기 때문에 만약의 경우에 탈취를 당했을 경우, 삭제가 불가능 하기 때문에 접근에 관여하는 토큰은 유효시간을 짧게 해야한다. 하지만 자동 로그인 혹은 로그인 유지를 위해서는 유효시간이 긴 토큰이 필요하다. 이때 사용되는 것이 Refresh Token 이다. Access Token의 재발급 방법 그럼 어떻게 재발급에 관여하는지 알아보자. 보통 Refresh Token은 로그인 성공시 발급되며 저장소에 저장하여 관리된다. 그리고 사용자가 로그아웃을 하면 저장소에서..
이번 프로젝트를 하다가 게시판 - 댓글을 왜 연관관계를 하면안되는지 이것보다 더 연관관계가 깊은게 뭐가 있을까 하면서 간접 참조라는 개념을 알게되었다 게시판은 댓글이 없어도 된다 하지만 댓글은 게시판이 있어야 한다. 하지만 이것 외에 둘의 관계는 없다. 댓글이 게시판 생성 수정 삭제에 관여할 것은 아니지 않은가 이렇다면 간접 참조를 사용하여야 한다. 도메인 주도 설계를 공부하다 보면 아래의 예시 이미지 처럼 도메인을 기준으로에그리거트 단위로 그룹핑을 하게 된다. 에그리거트 : 관련된 도메인의 집합 DDD 에서는 에그리거트간에 참조 방식은 직접 참조 방식 보다 간접 참조하는 방식을 권장한다. 위의 이미지는 회원과 빵집의 관계 (회원이 빵집을 등록하는 관계) 를 나타낸 것 이다. 1. 직접 참조 JPA 에..