전체 글

High hope
https://school.programmers.co.kr/learn/courses/30/lessons/76502 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 설명 다음 규칙을 지키는 문자열을 올바른 괄호 문자열이라고 정의합니다. (), [], {} 는 모두 올바른 괄호 문자열입니다. 만약 A가 올바른 괄호 문자열이라면, (A), [A], {A} 도 올바른 괄호 문자열입니다. 예를 들어, [] 가 올바른 괄호 문자열이므로, ([]) 도 올바른 괄호 문자열입니다. 만약 A, B가 올바른 괄호 문자열이라면, AB 도 올바른 괄호 문자열입니다. 예를 들어,..
https://school.programmers.co.kr/learn/courses/30/lessons/138476 문제 설명 경화는 과수원에서 귤을 수확했습니다. 경화는 수확한 귤 중 'k'개를 골라 상자 하나에 담아 판매하려고 합니다. 그런데 수확한 귤의 크기가 일정하지 않아 보기에 좋지 않다고 생각한 경화는 귤을 크기별로 분류했을 때 서로 다른 종류의 수를 최소화하고 싶습니다.  예를 들어, 경화가 수확한 귤 8개의 크기가 [1, 3, 2, 5, 4, 5, 2, 3] 이라고 합시다. 경화가 귤 6개를 판매하고 싶다면, 크기가 1, 4인 귤을 제외한 여섯 개의 귤을 상자에 담으면, 귤의 크기의 종류가 2, 3, 5로 총 3가지가 되며 이때가 서로 다른 종류가 최소일 때입니다.  경화가 한 상자에 담으..
https://school.programmers.co.kr/learn/courses/30/lessons/12985 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 설명 △△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N번의 참가자끼리 게임을 진행합니다. 각 게임에서 이긴 사람은 다음 라운드에 진출할 수 있습니다. 이때, 다음 라운드에 진출할 참가자의 번호는 다시 1번부터 N/2번을 차례대로 배정받습니다..
· Spring/JPA
JPA(Java Persistence API)에서 N+1 문제는 데이터베이스 쿼리를 실행할 때 발생하는 성능 문제 중 하나입니다.N+1 문제란?연관관계에서 발생하는 이슈로 연관관계가 설정된 부모 엔티티를 조회할 경우 조회된 자식 엔티티들만큼 연관관계의 조회 쿼리가 추가로 발생하여 데이터를 읽어오게 됩니다. 이를 N+1 문제라고 합니다. 예를 들어 N+1 문제는 다음과 같은 상황에서 발생합니다.1개의 쿼리로 특정 객체를 로딩합니다. (예: 부모 객체)이후 해당 객체와 관련된 N개의 객체를 가져와야 합니다. (예: 자식 객체들)N개의 객체를 가져오기 위한 쿼리가 N번 만큼 추가로 실행됩니다. 설명을 위한 엔티티 예제단순하게 부모 객체와 자식 객체 관계로 표현해보겠습니다.부모는 여러 자식을 키우고 있다.자식들..
· Spring/JPA
영속성 전이(CASCADE)영속성 전이 란 특정 엔티티를 영속성(persist) 상태로 만들 때 연관된 엔티티도 함께 영속성 상태로 만드는 것을 의미합니다. JPA(Java Persistence API)는 CASCADE 옵션을 통해 영속성 전이 기능을 제공합니다. 예를 들어 Person 엔티티와 Child 엔티티가 있다고 가정하겠습니다. 두 엔티티는 서로 양방향 관계를 가집니다.@Entitypublic class Parent { @Id @GeneratedValue private Long id; @OneToMany(mappedBy = "parent") private List childList = new ArrayList();}@Entitypublic class Child { @I..
· Spring/JPA
JPA(Java Persistence API)는 엔티티를 조회할 때 즉시 로딩(EAGER)과 지연 로딩(LAZY) 2가지 방식이 있습니다. 즉시 로딩은 엔티티를 조회할 때 연관된 엔티티까지 한 번에 가져오며, 지연 로딩은 엔티티 조회 시 연관된 엔티티를 가져오지 않고, 필요한 시점에 가져오는 방식입니다. FetchType이란?JPA가 엔티티를 조회할 때, 해당 엔티티와 연관관계를 맺은 엔티티를 어떻게 가져올지 설정하기 위함입니다. JPA는 사용자가 직접 쿼리를 생성하지 않아도 엔티티의 필드를 보고 상황에 맞게 쿼리를 생성합니다. 따라서 하나의 엔티티에 연관관계를 맺은 엔티티 매핑되어 있다면 같이 조회할 것인지 따로 조회할 것인지 선택할 수 있습니다. 따로 설정하지 않을 경우 default 값은 다음과 같..
· Spring/JPA
연관관계를 맺은 엔티티를 모두 포함시켜 조회하는 경우 비효율적일 수 있습니다. 굳이 불필요한 정보까지 조회하기 위해 쿼리가 복잡해지면 성능에도 영향을 끼칠 수 있기 때문입니다. JPA(Java Persistence API)는 이러한 문제를 대비하여 지연 로딩과 프록시를 제공합니다. 지연 로딩은 연관된 엔티티를 실제로 필요할 때까지 로딩을 지연시키는 방식으로, 성능을 향상하고 불필요한 쿼리를 방지합니다. 프록시는 실제 엔티티 대신 사용되며, 필요한 경우 실제 엔티티를 가져오게 됩니다. 프록시(Proxy)지연 로딩을 이해하려면, 먼저 프록시의 개념을 이해해야 합니다. JPA는 EntityManager를 통해 엔티티를 조회하는 메서드를 제공합니다. 앞으로 EntityManager를 em으로 축약하여 부르겠습니..
· Spring/JPA
관계형 데이터베이스는 객체처럼 상속이라는 개념이 대부분 존재하지 않습니다. 그나마 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사합니다. 상속관계 매핑이란 객체의 상속 구조와 데이터베이스의 슈퍼타입 서브타입 관계를 매핑하는 것입니다. 이번 포스팅을 통해 상속관계 매핑을 물리 모델로 구현하는 방식을 정리하고자 합니다. 슈퍼타입 서브타입 논리 모델객체지향 프로그래밍에서는 모델링과 구현이 상속을 활용하여 일치시킬 수 있지만, 데이터베이스는 상속을 직접적으로 지원하지 않아서 논리적인 모델과 물리적인 모델 간의 차이가 발생합니다. JPA(Java Persistence API)는 이러한 객체지향과 데이터베이스 간의 패러다임 불일치를 해결하기 위해 상속 관계를 물리적인 데이터베이스 모델로 매핑하..
Hui._.
개발 일기