2022년 9월 20일 화요일
@ 결국은 노력으로 극복을 할 수 있게 되어 있다,
스스로 부끄럽지 않은만큼 자신감도 생기고
실력도 오르는 것은 비례할 것이니, 매일매일에서
좀 더 세분화로 매순간을 떳떳하게 보내자.
아침 공부는 독서가 좀 더 맞는 것으로 보인다.
[수업 순서]
[연관 관계]
- 서로 다른 두 객체가 연고나성을 가지고
관계를 맺는 것을 연관 관계라고 한다.
[연관 관계의 분류]
1. 방향에 따른 분류 (단방향, 양방향)
- 테이블의 연관 고나계는 외래키를 이용하여
양방향 연관 관계의 특성을 가진다.
- 참조에 의한 객체의 연관 관계는 단방향이다.
- 객체 간의 연관 관계를 양방향으로 만들고 싶으면
반대 쪽에도 필드를 추가해서 보관하면 되는데
정확히 얘기하자면 양방향 관계가 아닌
서로 다른 단방향 관계 2개로 볼 수 있다.
- 다중성에 대한 분류
- 연관 관계가 있는 객체 관계 혹은 테이블 관계에서
실제로 연관을 가지는(매핑되는) 객체의 수(객체 관계)
또는 행(테이블 관계)의 수에 따라 분류된다.
2-1. 1:1(oneToOne) 연관 관계
2-2. 1:N(oneToMany) 연관 관계
2-3. N:1(ManyToOne) 연관 관계
2-4. N:N(ManyToMany) 연관 관계
[JPQL(Java Persistence Query Language)]
- 엔티티를 중심으로 개발할 수 있는 객체 지향 쿼리
- SQL보다 간결하며 DBMS에 상관 없이 개발 가능
(방언을 통해 해결, 특정 DBMS의 SQL에 의존하지 않음)
- JPQL은 find() 메소드를 통한 조회와는 다르게
항상 데이터베이스에 SQL을 실행해서 결과를 조회한다.
(영속성 컨텍스트에 이미 존재하면 기존 엔티티를
반환하고 조회한 것을 버림)
- JPQL은 엔티티 객체를 대상으로 쿼리를 질의하고
SQL은 데이터베이스의 테이블을 대상으로 질의한다.
- JPQL은 결국 SQL로 변환된다.
[JPA의 공식 지원 기능]
- Criteria 쿼리 : JPQL을 편하게 작성하도록 도와주는 API
- 네이티브 SQL : JPA에서 JPQL 대신 직접 SQL을 사용
[JPA의 비공식 지원 기능]
- QueryDSL : Criteria 쿼리처럼 JPQL을 편하게
작성하도록 도와주는 빌더 클래스 모음JDBC
직접 사용 또는 MyBatis 같은 SQL 매퍼 프레임워크
[특징]
- (주의!)엔티티와 속성은 대소문자를 구분한다
- SELECT, from과 같은 JPQL의 기본 키워드들은
대소문자를 구분하지 않는다.
- 엔티티명은 클래스명이 아니라 엔티티명이다.
(우리는 하나의 프로젝트에서 같은 이름의 엔티티 클래스를
사용해서 엔티티 명을 각각 다르게 주고 있지만
기본값인 클래스명을 엔티티 명으로 사용하는 것을 추천)
- JPQL은 별칭을 필수로 사용해야 하며 별칭 없이
작성하면 에러가 발생한다.
※ 확실히 협업을 하니깐, 부족한 나도 괜시리 자신감이 생긴다,
아직 세미프로젝트이긴 하지만 그래도 나의 역량이 좀 담긴
결과물을 얻기 위해서 뭐든 머리를 맞대는 마음가짐으로
임하게 되는 것 같다, 뭔가가 끌어오르고 있어서 좋다!