JPA 1st Step

최보현·2022년 8월 27일
0

JPA

목록 보기
1/10
post-thumbnail

자바 ORM 표준 JPA 프로그래밍 - 기본편 - sec01
출처 : JPA 기본편

About JPA

교안 최고... PDF참고가 답입니다...
보통 애플리케이션을 개발할 때 우리는 Java, Scala 같은 객체 지향 언어를 사용하고 Oracle, MySQL같은 관계형 DB를 주로 사용함

아직까지는 객체를 관계형 DB에 관리하는 것이 대세

SQL 중심적인 개발의 문제점

무한 반복 & 지루한 코드

우리는 자바 객체를 SQL로 바꾸고 또 이를 자바 객체로 바꾸고를 무한 반복하게 됨
예를 들어, Member객체를 생성해서 SQL로 바꾸는 코드까지 다 작성한 상태에서 악덕 기획자가 오 저희 이거 하나 추가해요~ 라고 하는 순간 우리는 대대적으로 바꿔야 함 헬게이트 오픈

즉, SQL에 의존적인 개발을 피하기 어려움

패러다임의 불일치

객체 지향 VS 관계형 데이터 베이스 => 얘네의 주 목적이 아예 상반
데이터 베이스 : 데이터를 잘 정교화해서 보관하는게 목표
객체 : 필요한 메서드 등을 잘 묶어서 추출해서 사용하는 것이 목표

객체를 영구 보관할 수 있는 곳은 많다! ex) RDB, NoSQL, File, OODB
하지만, 얘네로 하기에는 한계점이 너무나 크고 현실적인 대안은 관계형 데이터베이스

객체와 관계형 데이터베이스의 차이

  1. 상속
    관계형 데이터베이스에도 상속과 비슷한게 있긴 하지만 없다고 봐도 무관함
    객체의 상속 관계

    이런 상황에서 우리가 Album을 저장하고자 하면 객체를 분해하고 ITEM에도 ALBUM에도 INSERT를 해줘야하는 상황이 발생
    그리고 이를 조회하기 위해서도, 각각의 테이블에 따른 조인 SQL을 작성하고 객체를 생성하고 헬게의 시작
    DB에 저장할 객체에는 상속관계를 안 씀
    그나마 상속과 비슷한
  2. 연관관계
    객체는 참조를 가지고 할 수 있음

    데이터베이스는 PK나 FK로 조인을 해서 필요한 데이터를 찾을 수 있음(테이블에서는 자유롭게 왔다 갔다가 가능하지만, 객체는 단방향임)
  3. 데이터 타입
  4. 데이터 식별 방법

계층형 아키택처의 진정한 의미의 계층 분할이 어려움

비교하기

관계형 데이터 베이스

식별자가 동일하더라도 쿼리를 계속 던지기 때문에 다를 수 밖에 없음
자바 컬렉션 사용시

객체답게 모델링 할수록 매핑 작업만 무한 증가

JPA라는건 뭘까

자바 진영의 ORM 기술 표준
인터페이스의 모음이며 이를 구현한 3가지 구현체가 있는데 우리는 그 중에서 하이버네이트를 가장 많이 씀
자바 컬렉션처럼 넣었다 뺐다 할 수 있게 만들어주는 친구

ORM?

  • Object-relational mapping(객체 관계 매핑)
  • 객체는 객체대로 설계, 관계형 데이터베이스는 관계형 데이터베이스대로 설계
  • ORM 프레임워크가 중간에서 매핑
  • 대중적인 언어에는 대부분 ORM 기술 존재

JPA 저장과 조회 동작 방법

왜 사용해야할까?

  • SQL 중심적인 개발에서 객체 중심으로 개발 가능
  • 생산성
    저장, 조회, 수정, 삭제와 같은 메서드들이 다 구비되어 있음
  • 유지보수
    기존에는 필드 변경시 모든 SQL을 수정해야했지만 JPA를 통해 필드만 추가하면 SQL은 JPA가 알아서 처리해 줌
  • 패러다임의 불일치 해결
  • 성능 최적화 기능
  1. 1차 캐시와 동일성 보장

    굉장히 짧아음 => 실무에서는 그렇게 크게 도움이 되지 않음
  2. 트랙잭션을 지원하는 쓰기 지연

  3. 지연 로딩
  • 데이터 접근 추상화와 벤더 독립성
  • 표준
profile
Novice Developer's Blog

0개의 댓글