분류 전체보기
JPA 성능 최적화 (feat. @SequenceGenerator allocationSize)
JPA 성능 최적화 (feat. @SequenceGenerator allocationSize)
2023.04.09JPA 성능 최적화 (feat. @SequenceGenerator allocationSize) JPA의 기본 키 매핑을 들여다 보던 중, SEQUENCE 전략에 대해서 이해한 내용을 정리하려고 한다. Persistence Context에 대한 개념을 충분히 이해하고 있다는 가정하에 정리할 것이다. 우선, 기본키 매핑 전략으로 SEQUENCE를 사용하려면 @SequenceGenerator 를 생성해 주어야 한다. @Sequence의 속성은 아래와 같다. 속성들 중, allocationSize에 집중해보자. 성능 최적화에 사용되는 속성이다. allocationSize의 역할을 이해하려면, 먼저 SEQUECE전략의 기본적인 기본 키 매핑 과정을 이해해야한다. em.persist(member)가 호출 되면, m..
Trade-Off(구조의 안정성 vs 단순한 개발의 편리성)
Trade-Off(구조의 안정성 vs 단순한 개발의 편리성)
2023.04.07Trade-Off(구조의 안정성 vs 단순한 개발의 편리성) 스프링 데이터 JPA 예제를 수행한 것을 다시 한번 돌아보며, 느낀 것들을 기록한다. 우선, DI, OCP를 지키기 위해 어댑터를 도입한 코드의 클래스 의존 관계와, 런타임 객체 의존 관계를 살펴보자. 중간에서 JpaItemRepositoryV2가 어댑터 역할을 해준 덕분에 ItemService가 사용하는 ItemRepository 인터페이스를 그대로 유지할 수 있고, 클라이언트인 ItemService의 코드를 변경하지 않아도 되는 장점이 있다. 그런데, 여기서 고민이 생긴다. 구조를 맞추기 위해서, 중간에 어댑터가 들어가면서 전체 구조가 너무 복잡해지고 사용하는 클래스도 많아지는 단점이 생겼다. 실제 이 코드를 구현해야하는 개발자 입장에서 보..
Querydsl을 이용한 리팩토링(feat. 쿼리 조각화)
Querydsl을 이용한 리팩토링(feat. 쿼리 조각화)
2023.04.06Querydsl을 이용한 리팩토링 (feat. 쿼리 조각화) Querydsl을 공부하다가, 예제코드를 보고, 당연한 것임에도 정말 좋은 방법이다 라는 생각이 들어서 글을 남긴다. Before Refactoring Code 리팩토링을 하기 전의 코드다. Querydsl을 이용하여 동적쿼리를 작성한 코드다. 만약 검색 조건으로 들어온 itemName이 like검색을 수행하고, 없으면 like 검색을 하지 않고, 만약 검색 조건으로 들어온 maxPrice가 null이 아니면 and 조건을 달아서 >= maxPrice 를 수행하고, null이면 안하는 이러한 로직이다. 그런데, 여기서 조금더 코드를 개선했더니 많은 이점을 얻을 수 있었다. 우선, 리팩토링한 코드를 보자. After Refactoring Code..
[백준] 20040번 사이클 게임 (feat. 자료 구조, 유니온 파인드)
[백준] 20040번 사이클 게임 (feat. 자료 구조, 유니온 파인드)
2023.04.04https://www.acmicpc.net/problem/20040 문제 분석 첫 번째 단계 (문제 요약 및 조건 파악) 사이클 게임은 두 플레이어가 차례대로 돌아가며 진행하는 게임. 선 플레이어가 홀수 번째 차례 진행 후 플레이어가 짝수 번째 차례 진행 게임 시작 시 0부터 n - 1 까지 고유한 번호가 부여된 평면상의 점 n개가 주어지며, 이중 어느 세 점도 일직선 위에 놓이지 않음.(그래프 형태라는 뜻으로 해석함) 매 차례마다 플레이어는 두 노드를 선택해 간선을 연결함. 이전에 있던 간선을 다시 그을수는 없지만, 이미 있는 간선과 교차하는 것은 가능하다. 게임을 진행하다가 처음으로 사이클을 완성하면 게임종료. 노드의 갯수 n과 m번쨰 차례 까지의 게임진행 상황이 주어지면, 사이클이 완성 되었는지를 ..
[백준] 11286번 절댓값 힙 (feat. 자료 구조, 우선순위 큐)
[백준] 11286번 절댓값 힙 (feat. 자료 구조, 우선순위 큐)
2023.04.02https://www.acmicpc.net/problem/11286 문제 분석 첫 번째 단계(문제 요약 및 조건 파악) 절대값 힙은 다음과 같은 연산을 지원하는 자료구조다. 1. 배열에 정수 x(x != 0)을 넣는다. 2. 배열에서 절댓값이 가장 작은 값을 출력하고, 그 값을 배열에서 제거 만약, 절댓값이 작은 값이 여러개일 때는, 가장 작은 수를 출력하고, 그 값을 배열에서 제거 단, 프로그램은 처음에 비어있는 배열로 시작. - 입력 첫째 줄에 연산의 개수 N(1
[백준] 1927번 최소 힙 (feat. 자료 구조, 우선순위 큐)
[백준] 1927번 최소 힙 (feat. 자료 구조, 우선순위 큐)
2023.04.01https://www.acmicpc.net/problem/1927 문제 분석 첫 번째 단계(문제 요약 및 조건 파악) - 문제 요약 최소 힙을 이용하여 다음 연산을 지원하는 프로그램을 작성할 것. 1. 배열에 자연수 x를 넣는다. 2. 배열에서 가장 작은 값을 출력하고, 그 값을 배열에서 제거한다. 프로그램은 처음에 비어있는 배열에서 시작하게 된다. - 입력 첫째 줄에 연산의 개수 N(1