문제JPA에서는 1차 캐시를 사용하기 때문에 같은 엔티티에 대해서는 동일성(주소값이 같음)을 만족한다고 알고 사용해왔다. 그래서 나는 객체를 비교할 때 id가 아닌 객체 그 자체로 비교해 왔다. 그런데 어느 날 id로 가지고 온 객체를 이용해 fetch join을 통해 가지고 온 객체 중 하나를 찾는 로직을 작성했는데, 하나도 못 찾는 문제가 발생했다. 확인해보니 id를 통해 가지고 온 객체와 fetch join을 통해 가지고 온 객체의 주소값이 달랐다. 결론부터 말하자면 원인은 @Transactional을 붙이지 않아 발생했다. 테스트1. @Transactional 없이 조회아래 코드는 테스트를 위해 작성한 코드로, findByIdPerson은 personRepository에서 id를 이용해 perso..
회사에서 권한을 설계해봤다.1. 요구사항 분석이번 작업은 회사마스터, 회사 서브마스터, 업체마스터가 있는데 업체 마스터가 관리할 수 있는 업체 서브마스터 계정을 추가하는 작업이다. 회사 마스터회사 서브마스터업체 마스터업체 서브 마스터로그인 O O X X 로그아웃 X X O X 등록 X X O △(지정시) 수정 X X O △(지정시) 삭제 X X O △(지정시) 생성 O O O X 업체 서브마스터는 업체 마스터가 계정을 생성해줄때 3개의 권한을 선택적으로 줄 수 있다.예를 들어 권한이 A, B, C, D 네가지가 있다고 하면 마스터가 서브마스터 계정을 생성할 때 다중으로 선택 가능하다. 2. 설계먼저 기존에는 변수를 둬서 권한을 ..
PART 1 라라벨 디버그 모드 설정 라라벨에는 디버그모드가 있다.디버그모드를 false로 설정하면 에러가 발생해도 상세내용이 보이지 않는다1# 설정.env 파일로 가서 APP_DEBUG 를 true(디버그모드 켬) 혹은 false(디버그모드 끔)로 변경해준다. .env 파일은 laravel 폴더 밑에 있다. [디버그 모드 껐을 때] 에러 발생시 아래 사진과 같이 자세한 내용은 나오지 않는다. [디버그 모드 켰을 때]에러 발생시 아래 사진과 같이 자세한 내용이 출력된다. 더 자세한 내용은 공식문서를 참고하자 https://laravel.kr/docs/5.7/configuration
PART 1 POST로 보냈는데 GET으로 인식하는 문제 1# 원인 POSTMAN에서 API테스트를 하다가 POST 요청으로 보냈는데 GET으로 응답하는 문제가 발생했다. POSTMAN 홈페이지에서 찾아보니 리다이렉트 때문이라고 한다.POSTMAN이 301 또는 302 response code를 받으면 자동으로 GET으로 리다이렉트된다. https://support.getpostman.com/hc/en-us/articles/211913929-I-sent-a-POST-request-but-Postman-seems-to-be-sending-a-GET-request- [참고]301,302 코드는 리다이렉트 해주는 코드301, Permanently Moved : 영구적으로 옮김 302, Temporarily M..
PART 0 토큰(Token)기반 인증 기존의 세션 기반 인증과는 다르게 서버가 사인한 토큰을 이용하여 인증을 수행하는 방식. 1# 특징Stateless 서버 : 서버의 상태를 유지하지 않음( Stateful 서버) => 클라이언트-서버 사이에 연결고리가 없음 => 서버의 확장성이 높아짐모바일 어플리케이션에 적함 : 안전한 API를 만들기 위해 토큰 기반 인증을 사용함 인증정보를 다른 어플리케이션으로 전달 : 페이스북/구글 같은 소셜 계정들을 이용하여 다른 웹서비스에서도 로그인 할 수 있음(ex. OAuth) 보안 : 토큰 기반 인증 시스템을 사용하여 어플리케이션의 보안을 높일 수 있다. 2# 토큰 기반 시스템의 작동 원리유저가 아이디와 비밀번호로 로그인을 한다.서버측에서 해당 계정정보를 검증한다.계정정..
PART 0 HTTP의 특징 Stateless 프로토콜 : 클라이언트의 상태 정보를 가지지 않는 서버 처리 방식Connectionless 프로토콜 : 클라이언트가 서버에 요청(Request)을 했을 때, 그 요청에 맞는 응답(Response)을 보낸 후 연결을 끊는 처리방식But, 실제로는 데이터 유지가 필요한 경우가 많음 => Sateful 경우를 대처하기 위해 쿠키와 세션 사용- 쿠키와 세션의 차이점은 상태정보의 저장 위치- 쿠키(클라이언트=로컬=사용자의 브라우저에 저장), 세션(서버에 저장) PART 1 쿠키(Cookie) 사용자의 브라우저에 저장통신할 때 HTTP 헤더에 포함되는 텍스트 데이터 파일이름, 값, 만료기간(지정가능), 경로 정보가 있고 키와 값으로 구성되어 있다해당 사용자의 컴퓨터를 ..
PART 1 HTTP Hypertext transfer protocol의 약자인터넷에서 사용하는 웹 서보와 사용자의 인터넷 브라우저 사이에 문서를 전송하기 위한 통신 규약80번 포트 사용여러가지 메서드 사용(HEAD, GET, POST, DELETE, OPTION 등) PART 2 HTTPS Hypertext Transfer Protocol over Secure Socket Layer(HTTP over SSL)의 약자HTTP의 보안이 강화된 버전소켓 통신에서 일반 텍스트를 이용하는 대신에 SSL이나 TLS프로토콜을 통해 세션 데이터를 암호화 한다.포트번호는 443번 사용 PART 3 HTTP vs HTTPS HTTP HTTPS URIhttp://로 시작 https://로 시작 암호화X O 속도빠름 느림 ..
PART 0 REST API의 단점 엔드포인트 URL 변경 시 모두 수정해야함자원의 상태를 고려하지 않음=> 이러한 단점을 보완한 방식이 HATEOAS PART 1 REST 구현의 3단계 LEVEL0. REST 도입 전모든 전송과 응답을 POST로 하며 접근 가능한 엔드 포인트는 하나이다.HTTP의 body에 정보를 넣어 전송하는 기존의 리소스 전송 방식을 사용한다. LEVEL1. 리소스 도입REST를 도입하여 고유의 URI로 각각의 제공하는 자원을 주고 받는다.모든 자원을 제공함으로써 클라이언트는 다양한 자원과 포맷을 제공 받을 수 있다.ex)JSON, XML LEVEL2. HTTPURL과 HTTP method를 적극적으로 활용한다.해당 HTTP method로 어떻게 요청 하든 같은 응답을 받을 수 있..
- Total
- Today
- Yesterday
- 보관주기
- 다중 데이터소스
- 오블완
- 쓰레드 변수
- 넥서스 파일 보관주기
- 제우스8.5
- 티스토리챌린지
- cleanup policy
- 제우스8
- volatile
- SynchronousQueue
- multiple datasource
- kafka without zookeeper
- s3
- jpa 1차 캐시
- db 두개
- 넥서스 보관주기
- php
- 도커
- AWS
- 카프카
- 스레드 동기화
- API Gateway
- 주키퍼 없는 카프카
- 네트워크
- cleanup policies
- spring boot
- docker
- 제우스 로그
- kafka with raft
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |