Notice
Recent Posts
Recent Comments
Link
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

학습기록남기기

JPA(1) 본문

카테고리 없음

JPA(1)

backend_na 2022. 12. 27. 14:30

SQL 중심적인 개발

  • CRUD 쿼리 작성과 수정의 같은 동작의 무한 반복
  • 자바 객체를 직접 DB에 넣을 수 없고 , ‘ 자바 객체의 변수’와 ‘테이블 컬럼’ 과 매핑(=매칭)이 필요

→ JPA를 통해 위의 2가지 문제점을 해결

 

 

객체와 RDB의 차이

  1. 상속
    1. 객체는 명확하게 “상속 관계” 존재, RDB는 유사한 개념인 “슈퍼타입-서브타입” 존재
      1. RDB의 서브 타입 테이블에 데이터 저장 시 슈퍼 타입과 , 서브 타입 테이블에 각각 저장( 2 번의 INSERT 필요)
      2. 조회 시에는 슈퍼 타입 ,서브 타입 테이블의 JOIN SQL 작성해야 함
      3. JPA는 이런 번거로운 과정을 알아서 해줌
  2. 연관관계
    1. 객체는 “참조”를 사용해 다른 객체와의 관계를 맺고 / 테이블은 “외래키” 사용해 다른 테이블과 관계를 맺음
      1. 객체 지향 모델링은 객체 참조가 있어 다른 객체 탐색이 가능 , 테이블 지향 모델링은 두 테이블 간 참조를 하려면 “외래키”를 사용해야 함
      2. JPA는 관계 맺고 있는 객체 참조를 외래키로 변환해서 알아서 해주고 , 조회 할 때 외래키를 참조로 변환 과정을 알아서 해줌
  3. 객체 그래프 탐색
    1. SQL을 직접 작성할 때 어느 테이블 까지 탐색할 수 있는지 정해진다(작성 순간 정해짐)
      1. 왜냐면 JOIN 할 테이블을 직접 선택하기 때문 —> 다른 객체 탐색하려면 SQL 수정필요
      2. JPA는 실제 객체를 사용하는 시점까지 데이터 베이스 조회를 미루는(=지연 로딩)이 있다
  4. 비교
    1. DB는 기본 키 의 값으로 컬럼의 값을 구분
    2. 객체는 동일성 비교(객체의 주소 값을 비교 == 연산자) 와 동등성 비교 (객체의 내부 값을 비교 equals() 메서드)
      1. JPA는 같은 트랜잭션일 때 같은 객체가 조회 되는 것을 보장한다