DB 73

[용어 정리] DAO, DTO, VO, Mapper, Repository, Entity

개요 회의에 들어가면 저를 포함해서 DAO와 Repository, DTO와 VO를 혼용해서 사용하는 사람들이 많습니다. 이번 기회에 위 용어들의 개념을 정리하면서 차이점을 명확하게 짚고 가고자 합니다. * 출처에 남긴 블로그 및 유튜브를 많이 참고했습니다. 보다 자세한 내용은 출처를 확인해 주시면 감사하겠습니다! Entity DB 테이블을 표현하는 객체 (실제 DB와 매핑되는 객체) DB 테이블 내 모든 칼럼을 필드로 갖는 클래스로 비즈니스 로직을 갖는 메서드를 선언 가능 엔티티의 가장 큰 특징은 식별자를 가진다는 것 식별자 외 필드 데이터가 변경된다고 하더라도 식별자는 동일하기 때문에 해당 객체가 다른 객체가 되는 것은 아님 후술 하겠지만 VO와 Entity의 차이점은 Entity의 경우 식별자가 있지..

DB/개념 정리 2023.11.06

[Springboot] Jpa 프로젝트에 jOOQ 도입

jOOQ를 도입하게 된 배경 현재 진행하고 있는 프로젝트의 기술스택 중 이번 게시글과 연관된 기술들과 버전은 아래와 같습니다. Springboot 2.6.3 Java 1.8 spring-boot-starter-data-jpa (기본 키 생성 전략: IDENTITY) MariaDB 10.9.2 버전 QueryDSL 5.0.0 버전 Maven 프로젝트 내 기능 중 대용량 엑셀 업로드 기능과 json import 기능이 있는데 데이터가 커질수록 병목현상이 심해지는 것을 발견할 수 있었습니다. (json import의 경우 멀티 쓰레드 방식으로 과장님이 어느 정도 해결하시긴 하셨습니다.) 대용량으로 업로드할 때 entity를 하나하나 저장할 경우 불필요한 DB 커넥션이 많이 생기므로 1000개씩 묶어서 bulk..

리서치 2023.10.03

[Programmers] 식품분류별 가장 비싼 식품의 정보 조회하기

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/131116 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 서브 쿼리를 통해 풀 수 있는 문제였습니다. MySQL을 이용하여 풀었습니다. 개발환경: Programmers IDE 지적, 조언, 질문 환영합니다! 질문 남겨주세요~

[Programmers] 가격이 제일 비싼 식품의 정보 출력하기

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/131115 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 가격이 제일 비싼 식품이 N개일 경우를 대비하여 WITH문을 통해 제일 비싼 가격을 구하고 (MAX_PRICE), 해당 가격을 가진 식품들의 정보(들)을 조회하는 쿼리를 작성했습니다. MySQL을 이용하여 풀었습니다. 개발환경: Programmers IDE 지적, 조언, 질문 환영합니다! 질문 남겨주세요~

[Programmers] 그룹별 조건에 맞는 식당 목록 출력하기

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/131124 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr WITH문을 통해 리뷰를 작성한 사람 중 가장 많이 리뷰를 단 사람이 몇 개의 리뷰를 작성했는지 구하고 (MOST_REVIEW_COUNTS), 해당 개수만큼 리뷰를 단 사람들의 ID를 조회해 주면 쉽게 풀 수 있는 문제였습니다. (MEMBER_IDS) MySQL을 이용하여 풀었습니다. 개발환경: Programmers IDE 지적, 조언, 질문 환영합니다! 질문 남겨주세요~

[Programmers] 취소되지 않은 진료 예약 조회하기

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/132204 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr INNER JOIN문을 이용하면 쉽게 풀 수 있는 문제였습니다. MySQL을 이용하여 풀었습니다. 개발환경: Programmers IDE 지적, 조언, 질문 환영합니다! 질문 남겨주세요~

[Programmers] 우유와 요거트가 담긴 장바구니

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/62284 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 조금 지저분하지만 서브 쿼리를 두 번 호출하여 풀었습니다. (좀 더 깔끔한 해답이 분명 있을 것입니다.) -> 같은 테이블을 CART_ID 기준으로 INNER JOIN해서 푸는 방법이 좀 더 깔끔했겠네요. MySQL을 이용하여 풀었습니다. 개발환경: Programmers IDE 지적, 조언, 질문 환영합니다! 질문 남겨주세요~

[Programmers] 조건별로 분류하여 주문상태 출력하기

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/131113 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr CASE 문을 쓰면 쉽게 풀 수 있는 문제였습니다. MySQL을 이용하여 풀었습니다. 개발환경: Programmers IDE 지적, 조언, 질문 환영합니다! 질문 남겨주세요~

[Programmers] 상품을 구매한 회원 비율 구하기

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/131534 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2021년에 가입한 유저 관련 정보들을 미리 추출하는 쿼리를 작성하면 비교적 수월하게 풀 수 있는 문제였습니다. 비율을 구하는 문법이 조금 지저분하고 까다로운데 외우기보다는 필요할 때마다 MySQL 반올림 문법인 ROUND를 찾아보는 것을 추천드립니다. 개발환경: Programmers IDE 지적, 조언, 질문 환영합니다! 질문 남겨주세요~

[Programmers] 카테고리 별 상품 개수 구하기

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/131529 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr SUBSTRING 문법을 이용하여 쉽게 풀 수 있는 문제였습니다. MySQL을 이용하여 풀었습니다. 개발환경: Programmers IDE 지적, 조언, 질문 환영합니다! 질문 남겨주세요~