TIL.63

hyunki__ss·2022년 9월 20일
0

2022년 9월 20일 화요일

@ 결국은 노력으로 극복을 할 수 있게 되어 있다,
스스로 부끄럽지 않은만큼 자신감도 생기고
실력도 오르는 것은 비례할 것이니, 매일매일에서
좀 더 세분화로 매순간을 떳떳하게 보내자.
아침 공부는 독서가 좀 더 맞는 것으로 보인다.

[수업 순서]

  • association-mapping
  • jpql

[연관 관계]

  • 서로 다른 두 객체가 연고나성을 가지고
    관계를 맺는 것을 연관 관계라고 한다.

[연관 관계의 분류]
1. 방향에 따른 분류 (단방향, 양방향)

  • 테이블의 연관 고나계는 외래키를 이용하여
    양방향 연관 관계의 특성을 가진다.
  • 참조에 의한 객체의 연관 관계는 단방향이다.
  • 객체 간의 연관 관계를 양방향으로 만들고 싶으면
    반대 쪽에도 필드를 추가해서 보관하면 되는데
    정확히 얘기하자면 양방향 관계가 아닌
    서로 다른 단방향 관계 2개로 볼 수 있다.
  1. 다중성에 대한 분류
  • 연관 관계가 있는 객체 관계 혹은 테이블 관계에서
    실제로 연관을 가지는(매핑되는) 객체의 수(객체 관계)
    또는 행(테이블 관계)의 수에 따라 분류된다.
    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은 별칭을 필수로 사용해야 하며 별칭 없이
    작성하면 에러가 발생한다.

※ 확실히 협업을 하니깐, 부족한 나도 괜시리 자신감이 생긴다,
아직 세미프로젝트이긴 하지만 그래도 나의 역량이 좀 담긴
결과물을 얻기 위해서 뭐든 머리를 맞대는 마음가짐으로
임하게 되는 것 같다, 뭔가가 끌어오르고 있어서 좋다!

profile
야구선수 출신 개발자

0개의 댓글