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은 로그인 성공시 발급되며 저장소에 저장하여 관리된다. 그리고 사용자가 로그아웃을 하면 저장소에서..
@PathVariable 이란? REST API에서 URI에 사용되는 변수이다. 예를 들면, 아래 URI에서 밑줄 친 부분이 @PathVariable로 처리해줄 수 있는 부분이다. localhost:8080/api/user/1234 music.bugs.co.kr/album/4062464 2개가 필요할 경우 따로 따로 선언 해주면 된다. @PutMapping("/posts/{postId}/comments/{commentId}") public void editComment(@PathVariable Long postId,@PathVariable Long commentId, @RequestBody CommentRequestDto commentrequestDto) { commentService.editCommen..
로그인시 Jwt Token을 발급해준다.(편의상 헤더에 발급) Jwt 특성상 한번 발금된 토큰은 만료시켜줄 수 없다. Jwt의 특성을 잘 나타내준 블로그 https://sound-story.tistory.com/21 [JWT] JWT는 왜 쓸까? 이게 최선일까? 로그인 후에 Access Token을 발급하여 쿠키에 저장하는 것까지 구현해 보았습니다. https://sound-story.tistory.com/19 [NestJS] Auth Token을 쿠키에 저장하기 email, password를 통해 로그인하여 access token을 생성하 sound-story.tistory.com Reissu Jwt 를 쿠키에 저장해 두었기 때문에 들어올때 쿠키중에 refreshtoken의 쿠키가 있는지 확인하고 ac..
테이블 외래키 하나로 양쪽 조인가능 사실 방향이라는 개념이 없음 객체 참조용 필드가 있는 쪽으로만 참조 가능 한쪽만 참조하면 단방향 양쪽이 서로 참조하면 양방향 양방향은 단방향을 서로 보는것이 양방향이다. 테이블은 외래 키(기준이 되는 키) 하나로 두 테이블이 연관관계를 맺음 연관관계의 주인 : 이 그림에서 연관관계의 주인은 커스터머 이다 (mappedby = "customer") 외래키를 관리하는 참조 = 기준이된 키를 가지고 있는 객체가 주인 !! 주인의 반대편 = 외래키에 영향을 주지 않음 (단순 조회만 가능) ex. 주문 테이블에서 사람에게 영향을 줄순 없다. 1. 두가지 테이블을 연결하는데 기준이 필요하다. (manytoone / joincolumn) *다대일은 연관관계 주인이 되어야 한다 2..