02.06 JPA 기초

2023. 2. 6. 09:46개발일지

JPA (Java Persistence API) : 자바 ORM 기술에 대한 표준 명세
  • 쿼리를 자동으로 만들어 줍니다.
  • 그리고 어플리케이션 계층에서 sql 의존성을 줄여서 번거로운 작업이 매우매우 단축됩니다.
  • Java 어플리케이션 상에서 DB의 연관관계를 표현해주기 위한 장치들을 가지고 있습니다.

ORM (Object Relational Mapping) : 객체 - 관계 매핑
  • 객체와 관계형 DB의 데이터를 자동으로 매핑(연결)해주는 것을 말합니다.
    • 객체 지향 프로그래밍은 클래스를 사용하고, 관계형 DB는 테이블을 사용합니다.
    • 객체 모델과 관계형 모델 간에 불일치가 존재하며, ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결합니다.
    • DB 데이터 ←  매핑  →  Object 필드
      • 객체를 통해 간접적으로 데이터베이스 데이터를 다룹니다.
    • Persistant API라고도 할 수 있습니다.

JPA 연관관계
JPA 연관관계 설정방법
  • JPA의 경우는 Enitity 클래스의 필드 위에 연관관계 어노테이션 (@)을 설정해 주는 것만으로 연관관계가 형성됩니다.

'음식 배달 서버'를 개발한다고 가정 했을 때
관계 코드 선언 Enitity ex
일대다 (1:N) @OnetoMany Order (1) : Food (N) 배달 주문 1개에 음식 여러개 선택 가능
다대일 (N:1) @ManyToOne Owner (N) : Restaurant(1) 음식점 주인 여러명이 하나의 음식점을 소유 가능
일대일 (1:1) @OnetoOne Order (1) : Coupon (1) 배달 주문 1개 주문시, 쿠폰 1개만 할인 적용 가능
다대다 (N:N) @ManyToMany User (N) : Restaurant(N) 고객은 음식점 여러개 찜 가능
음식점은 고객 여러명에게 찜 가능

Spring Data JPA 이해
Spring Data JPA
  • JPA를 편리하게 사용하기 위해, 스프링에서 JPA를 Wrapping
  • 스프링 개발자들이 JPA를 사용할 때 필수적으로 생성해야 하나, 예상 가능하고 반복적인 코드들 → Sping Data JPA가 대신 작성
  • Repostiory 인터페이스만 작성하면, 필요한 구현은 스프링이 대신 알아서 해줍니다.

'개발일지' 카테고리의 다른 글

02.08 JPA 심화  (0) 2023.02.08
02.07 TIL  (0) 2023.02.07
02.04 HTTP, OSI, TCP/IP 특강 (TIL)  (0) 2023.02.04
02.03 Database 와 SQL  (0) 2023.02.03
02.03 SpringBoot 및 서버 이해  (0) 2023.02.03