본문 바로가기
반응형

전체 글52

RDB Join 방식 Join 두 테이블을 합치는 과정 대부분 정규화를 거치게 되면 1:N(OneToMany/ManyToOne), 1:1(OneToOne)관계를 가지게 됩니다. 이런 연관관계를 DB측에서는 relation관계라고 표현합니다. Join 방식 Nested Loop방식 mysql이 많이 사용하는 방식 8.0.18버전 이전에는 mysql 의 유일한 join 방식입니다 먼저 처리될 table(drivinig table)의 row수가 작을 수록 성능적인 이점을 가져갑니다 이유 nested loop에서는 index가 없을 경우 2중 for문 처럼 조회 하게 됩니다. 만약 driving table의 row가 커질 수록 outer table의 전체 조회 횟수가 증가 하기 때문입니다. index가 있을 경우 random acc.. 2021. 12. 9.
Servlet과 Spring Container Servlet과 Spring Container Servlet 정의 request 요청을 처리해주는 (비즈니스 로직을 실행) 구성 init() : servlet 객체를 생성할 때 사용하는 메서드 service() : servlet의 요청에 대해서 비즈니스 로직을 실행하는 단계 destory() : servlet 종료/삭제 전 실행하는 비즈니스 로직 특징 servlet은 HttpServlet으로 상속을 받아서 사용합니다. 상속 받은 객체에서는 doPost, doGet 등 함수로 변경해서 사용 우리가 사용하는 tomcat인 경우에는 servlet 객체를 사용 후 바로 삭제 하지 않고, 싱글톤으로 사용함 -> reload나, tomcat이 끝나기 전에 destory 작업 진행 spring framework 에서.. 2021. 12. 4.
NamingLock을 이용한 동시성 이슈, Deadlock query 이슈 해결 동시성 이슈 + Deadlock query 이슈 해결 이슈 발생 종류 : deadlock, race condition 간단하게 Entity 연관관계를 설명하자면 Food User관계 입니다. 사용자가 음식사진과 정보를 보고 좋아요를 누르는 기능입니다. (facebook, instargram과 동일한 기능) 발생한 이슈는 동일한 food에 여러 사용자가 like를 누를 경우 dead lock 이슈와, like Entity에 적제된 row수와 food에 반정규화로 설정한 numberOfLikes 컬럼의 값과 불일치 이슈가 발생 비즈니스 로직 간단한 Table 구조 간단한 Entity 구조 @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) .. 2021. 12. 1.
Spring Test Mock 사용법 및 특징 예제 코드 링크 Mockito 종류 Mockito.mock(T) @Mock @MockBean @Spy @SpyBean @InjectMocks 예제 코드 Entity @Getter @Setter @NoArgsConstructor public class Entity { private Long id; private String name; @Builder public Entity(Long id, String name) { this.id = id; this.name = name; } } 목적 : 저장 목적을 가지고 있는 객체 EintityIdCreator @Component public class EntityIdCreator { private long id = 0; public long generateNewId(.. 2021. 10. 30.
반응형