Java.Spring

· Java.Spring
[문제 상황]여러분 모두 유명 공연 티케팅시 "이미 선택된 좌석입니다" 혹은대학교 수강신청을 하면서 분명히 신청을 눌렀는데 로딩이 걸리더니 마감이되버린 경험이 있을 것이다.분명히 신청버튼을 누를 때는 마감이아니였는데 마감이 되버린.. 이러한 문제를 "동시성 문제"라고 한다. 현재 내가 개발중인 서비스에는 공연 티켓 발급기능이 있다.이제는 내가 티켓을 사는 구매자가 아닌 구매자들의 요청을 대응하는 개발자이다.사용자들이 거의 동시에 티켓구매요청을 할 것이고 나는 남은 티켓 수에 일치하도록 티켓에 대한 요청을 수락하거나 거절해야한다.이러한 동시성 문제를 해결 할 수 있는 방법이 Lock이다.Lock 중에서도 비관적 락 그중에서도 X Lock을 사용했다.왜 이걸 사용했어요?? 까지 설명하면 글이 너무 길어질 것..
· Java.Spring
[글을 쓰는 이유]평상시 나는 아무런 생각없이 Jpa를 이용해 연관 객체들을 조회했었다.그러다 팀원의 코드리뷰를 계기로 N+1 문제에 대해 공부하였고 간단하지만 실제 내가 만들었던 코드에 직접 적용하고 기록하고자 이글을 쓴다. [Jpa N+1문제란?]요청이 1개의 쿼리로 처리 되길 바랬는데 N개의 추가 쿼리가 발생하는 현상이다.조금 더 자세히 설명해보자면  Jpa를 사용해서 연관관계가 설정되어 있는 엔티티를 조회할 때 조회된 데이터 개수(N) 만큼 N개의 연관관계의 쿼리가 추가로 발생하는 것을 말한다.(만약 데이터가 백만개라면 ->  한번 조회로 백만개의 쿼리가 생성될 것이다..!) [문제상황]엔티티 구성과 연관관계를 설명하기 위해 ERD를 첨부하겠다. Coffee 테이블 == Product 엔티티이다...
· Java.Spring
[글을 쓰는 이유]지금까지 엔티티 혹은 여러 클래스를 구현하면서 이유나 근거없이 무조건적으로 @Setter 어노테이션을 사용하였다.최근에 Builder pattern에 대해 알게 되면서,단순 기능구현에 급급하여 생각없이 짰던 옛날 코드를 보며 반성하고무분별한 Setter사용 대신 더 객체지향적인 방법으로 객체 필드 값을 다루는 방법에대해 알아보자!  [Builder Pattern]빌더 패턴 == 생성과 관련된 디자인 패턴으로, 동일한 프로세스를 거쳐 다양한 구성의 인스턴스를 만드는 방법이러한 진부한 정의 말고 builder pattern을 이해하기 쉽게 비유하는 표현이 있어서 인용하겠다.바로 내가 좋아하는 "써브웨이"이다. 써브웨이는 주문할 때 방부터 , 패티, 재료까지 주문하는 사람이 마음대로 결정한다..
네카라쿠배
'Java.Spring' 카테고리의 글 목록