이전 시간에 배운 것

1. JPA란?

  • JPA는 Java Persistence API이다.
  • JPA는 ORM 기술이다.
  • JPA는 반복적인 CRUD 작업을 생략하게 해준다.
  • JPA는 영속성 컨텍스트를 가지고 있다.
  • JPA는 DB와 OOP의 불일치성을 해결하기 위한 방법론을 제공한다. (DB는 객체저장 불가능)

  • JPA는 OOP의 관점에서 모델링을 할 수 있게 해준다. (상속, 콤포지션, 연관관계)
Class Car {
    int id;
    String name:
    String color:
    Engine engine; // <- 컴포지션
}

Class Engine {
    int id;
    int power;
}

잘 만든 엔진을 차에 상속하고 싶지만, 엔진이 차의 부모가 되는 관계가 형성이 되면 말이 안된다. 컴포지션이라는 방법을 써야한다. (결합)  
JPA는 DB를 먼저만들고 그 테이블을 통해 Car클래스를 모델링하는게 아니라, 클래스를 먼저 만들고 이를 토대로 자동생성을 해서 DB에 테이블을 만들어주기 때문에 다음처럼 만들어진다.

모든 클래스에 날짜를 넣고 싶을때 

Class EntityDate{
    Timestamp createDate;
    Timestamp updateDate;
}

이처럼 EntityDate 클래스를 만들고 각 클래스에 상속시킨다.

Class Car extends EntityDate {
    int id;
    String name:
    String color:
    Engine engine; // <- 컴포지션
}

Class Engine extends EntityDate {
    int id;
    int power;
}
  • 방언 처리가 용이하여 Migration하기 좋음. 유지보수에도 좋음

스프링을 JPA를 이용해서 DB에 접근을 한다. 이때 JPA가 무조건 MySQL만 지원을 한다면 DB접근이 MySQL밖에 안됨. 하지만 Dialect( 오라클, 마리아, MSSQL, PostgreSQL)들이 있기때문에 JPA에 추상화객체가 붙어있어서 각 Dialect에 연결되는 구조.

  • JPA는 쉽지만 어렵다.

    개념이 조금 헷갈림. 기존에 사용하던 방식과 다르고 생소한 개념들이 많이 나오는데, 적응하면 쉬워짐. 적응하다 보면 또 무자비한 Select 때문에 해결하기 어려워짐. 
이 블로그 포스팅은 인프런 최주호님의 스프링부트 개념정리(이론) 강의에 대한 정리 포스팅입니다. 
다음은 강사님의 강의 링크입니다. 무료 강의라서 가입만 하면 볼 수 있습니다. (강의 링크)

'웹 개발 > Spring Boot' 카테고리의 다른 글

톰캣이란 무엇일까요?  (0) 2023.08.14
HTTP가 무엇일까요?  (0) 2023.08.03
영속성 컨텍스트란 무엇인가요?  (0) 2023.07.31
ORM이란 무엇인가요?  (0) 2023.07.31
JPA란 무엇인가요?  (0) 2023.07.30

+ Recent posts