분류 전체보기 2573

[10장] 객체지향 쿼리 언어

객체지향 쿼리 소개EntityManager.find() 메서드를 사용하면 식별자로 엔티티 하나를 조회 가능이렇게 조회한 엔티티에 객체 그래프 탐색을 사용하면 연관된 엔티티들을 찾을 수 있음식별자로 조회: EntityManager.find()객체 그래프 탐색: i.g. member.getTeam() 하지만 이 기능만으로는 애플리케이션을 개발하기 어려움ex) 나이가 30살 이상인 회원을 모두 검색하고 싶을 때 좀 더 현실적이고 복잡한 검색 방법 필요데이터는 DB에 있으므로 SQL로 필요한 내용을 최대한 걸러서 조회해야 하는데 ORM을 사용하면 DB 테이블이 아닌 엔티티 객체를 대상으로 개발하므로 검색도 테이블이 아닌 엔티티 객체를 대상으로 하는 방법이 필요 JPQL은 위와 같은 문제를 해결하기 위해 만들어졌..

[Programmers] 격자 뒤집기 미로

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/389630 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 비트마스크를 통해 풀 수 있는 문제였습니다. 알고리즘은 다음과 같습니다.1. 격자의 모든 칸의 visible 값을 더해 기본 점수를 구하고, 각 칸에서 hidden과 visible의 차이를 diff로 계산합니다. 2. 각 행을 뒤집거나 그대로 두는 모든 경우 {2^(행 수}) 가지를 고려하여, 뒤집힌 행의 수에 따른 비용을 기본 점수에서 차감해 기준 점수를 정합니다. 3. 각 열에서 "열을 그대로 둘 때”와 “열을 뒤집을 때..

[9장] 값 타입

기본값 타입아래 예제의 Member에서 String, int가 값 타입Member 엔티티는 id라는 식별자 값도 가지고 생명주기도 있지만값 타입인 name, age 속성은 식별자 값도 없고 생명주기도 회원 엔티티에 의존이에 따라 회원 엔티티 인스턴스를 제거하면 name, age 값도 제거됨  임베디드 타입 (복합 값 타입)임베디드 타입은 새로운 값 타입을 직접 정의해서 사용하는 것중요한 것은 직접 정의한 임베디드 타입 또한 int, String처럼 값 타입이라는 것 임베디드 타입 적용 전회원 엔티티는 이름, 근무 시작일, 근무 종료일, 주소 도시, 주소 번지, 그리고 주소 우편 번호를 멤버 변수로 가짐  임베디드 타입 적용 후앞선 설명은 단순히 정보를 풀어둔 것뿐근무 시작일과 우편번호는 서로 아무 관련이..

RAG 프로세스 이해하기

RAG (Retrieval Augmented Generation)질문이나 요청을 처리할 때, 기존의 LLM 결과에 추가적으로 검색한 문서 정보인 context를 결합해 보다 정확하고 구체적인 답변을 생성하는 기법최신 정보를 효과적으로 활용하기 위해 정보를 참조하는 방식으로, 단순히 기존 모델의 사전 학습된 데이터에 의존하지 않고 정보를 실시간으로 적용RAG는 외부 DB에서 최신 자료를 검색해 도메인별 최신 문서 및 연구 자료 등을 답변 근거로 삼음으로써, 대규모 언어 모델이 사전 학습 지식에만 의존할 때 발생할 수 있는 할루시네이션 문제를 효과적으로 줄여줌  1. Pre-processing 단계전처리 과정은 원본 문서를 LLM이 활용할 수 있도록 형태를 가공하는 작업입니다.Document Load: Wo..

[8장] 프록시와 연관관계 관리

프록시엔티티를 조회할 때 연관된 엔티티들이 항상 사용되는 것이 아님연관된 엔티티들이 사용되지 않음에도 불구하고 데이터베이스에서 연관된 엔티티를 함께 조회해 두는 것은 효율적이지 않음JPA는 위와 같은 문제를 해결하기 위해 엔티티가 실제 사용될 때까지 데이터베이스 조회를 지연하는 방법을 제공하는데 이것을 지연 로딩이라고 부름지연 로딩 기능을 사용하려면 실제 엔티티 객체 대신에 데이터베이스 조회를 지연할 수 있는 가짜 객체가 필요한데 이것을 프록시 객체라 부름 1. 프록시 기초JPA에서 식별자로 엔티티 하나를 조회할 때는 `EntityManager.find()`를 사용해당 메서드는 영속성 컨텍스트에 엔티티가 없을 경우 데이터베이스를 조회이렇게 엔티티를 직접 조회할 경우 조회한 엔티티를 실제 사용하든 사용하지..

[7장] 고급 매핑

상속 관계 매핑관계형 데이터베이스에는 객체지향 언어에서 다루는 상속이라는 개념이 없지만슈퍼타입 서브타입 관계 (Super-Type Sub-Type Relationship)라는 모델링 기법이 객체의 상속 개념과 가장 유사함ORM에서 이야기하는 상속 관계 매핑은 객체의 상속 구조와 데이터베이스의 슈퍼타입 서브타입 관계를 매핑하는 것슈퍼타입 서브타입 논리 모델을 실제 모델인 테이블로 구현할 때는 다음과 같은 세 가지 방법을 선택 가능각각의 테이블로 변환: 각각을 모두 테이블로 생성하고 조회할 때 조인을 사용하며 JPA에서는 조인 전략이라고 부름통합 테이블로 변환: 테이블을 하나만 사용해서 통합하고 JPA에서는 단일 테이블 전략이라고 부름서브타입 테이블로 변환: 서브 타입마다 하나의 테이블을 생성하며 JPA에서..

[6장] 다양한 연관관계 매핑

다대일다대일 관계의 반대 방향은 항상 일대다 관계마찬가지로 일대다 관계의 반대 방향은 항상 다대일 관계데이터베이스 테이블의 1, 다 관계에서 외래 키는 항상 다쪽에 존재 (연관관계의 주인) 1. 다대일 단방향 [N:1]회원 엔티티와 팀 엔티티 코드를 통해 다대일 단방향 연관관계를 알아보겠습니다.회원은 Member.team으로 팀 엔티티를 참조할 수 있지만팀에는 회원을 참조하는 필드가 없기 때문에 다대일 단방향 연관관계@JoinColumn(name = "TEAM_ID")를 사용해서 Member.team 필드를 TEAM_ID 외래 키와 매핑했기 때문에 Member.team 필드로 회원 테이블의 TEAM_ID 외래키를 관리함   2. 다대일 양방향 [N:1, 1:N]다대일 양방향의 객체 연관관계에서 Membe..

[5장] 연관관계 매핑 기초

단방향 연관관계아래 그림의 다대일 단방향 관계는 다음과 같습니다.회원과 팀 객체가 있음회원은 하나의 팀에만 소속될 수 있음회원과 팀은 다대일 관계객체 연관관계에서는 Member.team 필드를 통해서 팀을 알 수 있지만 반대로 팀은 회원을 알 수 없기 때문에 단방향 관계반면, 테이블 연관관계에서는 회원 테이블의 TEAM_ID 외래 키를 통해 회원과 팀을 조인할 수 있고 반대로 팀과 회원도 조인할 수 있으므로 양방향 관계  부연 설명참조를 통한 연관관계는 언제나 단방향객체 간에 연관관계를 양방향으로 만들고 싶은면 반대쪽에도 필드를 추가해서 참조를 보완해야 함양쪽에서 서로 참조하는 것을 양방향 연관관계라고 부르지만 정확하게는 양방향 관계가 아니라 서로 다른 단방향 관계 2개 객체는 참조로 연관관계를 맺는 반..

[과목 I 1장 5절] 식별자

1. 식별자 개념엔티티는 인스턴스들의 집합이므로, 이들을 구분하기 위해 식별자(Identifier)라는 논리적 이름을 사용식별자란 하나의 엔터티에 구성된 여러 개의 속성 중에 엔터티를 대표할 수 있는 속성을 의미하나의 엔터티는 반드시 하나의 유일한 식별자가 존재해야 함 2. 식별자의 특징주식별자일 경우 다음과 같은 특징을 가짐유일성: 주식별자에 의해 엔터티 내 모든 인스턴스들이 유일하게 구분되어야 함최소성: 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함불변성: 지정된 주식별자의 값은 자주 변하지 않는 것이어야 함존재성: 주식별자가 지정이 되면 반드시 값이 들어와야 함 대체식별자의 특징은 주식별자의 특징과 일치외부식별자의 경우 주식별자 특징과 일치하지 않으며 참조 무결성 제약 조..

[과목 I 1장 4절] 관계

1. 관계의 개념 가. 관계의 정의관계 (Relationship)을 사전적으로 정의하면 상호 연관성이 있는 상태데이터 모델에서 관계는 `엔터티 인스턴스들 사이에 논리적 연관성을 부여하는 것으로, 이는 존재의 상태나 특정 행위의 형태` 나. 관계의 페어링관계는 엔터티 안에 인스턴스가 개별적으로 관계를 가지는 것 (페어링)이고, 이 것의 집합을 관계로 표현한다는 것엔터티 내에 인스턴스와 인스턴스 사이에 관계가 설정된 occurrence를 관계 페어링이라고 함엔터티가 인스턴스의 집합을 논리적으로 표현했다면, 관계는 관계 페어링의 집합을 논리적으로 표현한 것 개별 인스턴스가 각각 다른 종류의 관계를 가지고 있을 경우 두 엔터티 사이에 두 개 이상의 관계가 형성될 수 있음  2. 관계의 분류관계를 연결함에 있어 ..