[자바 ORM 표준 JPA 프로그래밍 - 기본편] 섹션 02. JPA 소개
1. SQL 중심적인 개발의 문제점 지금 시대는 객체를 관계형 DB에 보관하는 시대다. 관계형 DB에 객체를 보관하려면 SQL을 사용해야하는데, 이는 CRUD의 반복과 지루한 코드를 동반한다. 결과적으로 SQL에 의존적인 개발을 피하기 어렵다. 2. 객체와 관계형 DB의 차이 1. 상속 2. 연관관계 객체는 상속을, ...
1. SQL 중심적인 개발의 문제점 지금 시대는 객체를 관계형 DB에 보관하는 시대다. 관계형 DB에 객체를 보관하려면 SQL을 사용해야하는데, 이는 CRUD의 반복과 지루한 코드를 동반한다. 결과적으로 SQL에 의존적인 개발을 피하기 어렵다. 2. 객체와 관계형 DB의 차이 1. 상속 2. 연관관계 객체는 상속을, ...
1. 목표 - 객체와 테이블 설계 매핑 객체와 테이블을 제대로 설계하고 매핑하는 방법 기본 키와 외래 키 매핑 1:N, N:1, 1:1, N:M 매핑 실무 노하우 + 성능까지 고려 어떠한 복잡한 시스템도 JPA로 설계 가능 2. 목표 - JPA 내부 동작 방식 이해 JPA의 내부 동작 방식을 이해하고 사용 ...
문제 링크 1. 문제 풀이 조건문을 활용해서 나이와 몸무게를 기준으로 분기 처리만 해주면 된다. 2. 코드 1. 풀이 [Java] import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IO...
문제 링크 1. 문제 풀이 전체 참가자의 수가 $N$ 일 때, 티셔츠는 $T$ 장 묶음으로 구매할 수 있으므로 각 사이즈 대한 신청자의 수를 $x$ 라고 하면 $\dfrac{x + (T - 1)}{T}$ 묶음이 필요하다. 일반 나눗셈은 몫만 구하고 나머지를 버리기 때문에 올림 나눗셈으로 각 사이즈마다 묶음의 수를 구해주면 된다. 펜의 경우 ...
문제 링크 1. 문제 풀이 과일 탕후루에서 막대의 앞쪽과 뒤쪽에서 몇 개의 과일을 빼서 두 종류 이하의 과일만 남기는 문제로 투 포인터를 활용하면 해결할 수 있다. 두 포인터 사이에 위치한 과일들이 막대에 꽂혀있는 과일들로 간주하면 앞쪽과 뒤쪽에서 몇 개의 과일을 뺀 것을 다룰 수 있으며 과일의 종류가 $10$ 미만의 자연수들만 있으므로 카...
문제 링크 1. 문제 풀이 WITH RECURSIVE를 활용해서 해결했다. 0부터 23까지를 행으로 갖는 가상 테이블을 만들고 이를 ANIMAL_OUTS와 LEFT JOIN 해줬다. 2. 쿼리 WITH RECURSIVE hours AS ( SELECT 0 AS HOUR UNION ALL SELECT HOUR ...
문제 링크 1. 문제 풀이 CASE 문과 PERCENT_RANK() 윈도우 함수를 활용해서 크기별 문구를 구해줬다. 2. 쿼리 SELECT ID, CASE WHEN PERCENT_RANK() OVER (ORDER BY SIZE_OF_COLONY) >= 0.75 THEN 'CRITICAL' ...
문제 링크 1. 문제 풀이 셀프 조인을 활용해서 부모 테이블의 ID와 자식 테이블의 PARENT_ID를 기준으로 LEFT JOIN을 해줬다. 2. 쿼리 SELECT p.ID, COUNT(c.PARENT_ID) AS CHILD_COUNT FROM ECOLI_DATA AS p LEFT JOIN ECOLI_DATA AS c ON...
문제 링크 1. 문제 풀이 FISH_INFO 테이블과 FISH_NAME_INFO 테이블을 FISH_TYPE으로 JOIN 후 FISH_TYPE과 LENGTH를 서브쿼리를 통한 튜플 비교해 필터링했다. 서브쿼리는 각 타입별 최대 길이를 반환하도록 했다. 2. 쿼리 SELECT i.ID, n.FISH_NAME, i...
문제 링크 1. 문제 풀이 CAR_RENTAL_COMPANY_CAR 테이블과 CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블을 CAR_TYPE으로 JOIN 해줬다. 이때 30일간의 대여금액만 출력하므로 DURATION_TYPE까지 30일 이상인 레코드만 JOIN 했다. 이후 WHERE 절에서 CAR_TYPE이 세단이나 SU...