JPA로 데이터베이스 다루기

Minyuk·2023년 1월 6일
0
post-thumbnail

JPA 소개

Java Persistence API, 자바 진영의 ORM 기술 표준

  • 객체지향 프로그래밍 언어와 관계형 데이터베이스 중간에서 패러다임 일치를 시켜주기 위한 기술
  • 개발자는 객체지향적으로 프로그래밍
    -> JPA가 관계형 데이터베이스에 맞게 SQL을 대신 생성해서 실행
  • SQL에 종속적인 개발을 하지 않아도 됨
  • 생산성 향상, 유지보수 용이

ORM

  • Object-relational mapping(객체 관계 매핑)
  • 객체는 객체대로, RDB는 RDB대로 설계
  • ORM 프레임워크가 중간에서 매핑

Spring Data JPA

  • 구현체(Hibernate, Eclipse Link 등)들을 좀 더 쉽게 사용하고자 추상화 시킨 모듈
  • 구현체 용이성
    -> Hibernate 외에 다른 구현체로 쉽게 교체하기 위함
  • 저장소 교체의 용이성
    -> 관계형 데이터베이스 외에 다른 저장소로 쉽게 교체하기 위함

JPA 구현

build.gradle에 의존성 추가

implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

Entity 생성

  1. @Entity
    • 테이블과 링크될 클래스
    • 기본값으로 클래스의 카멜케이스 이름을 언더스코어 네이밍(_)으로 테이블 이름을 매칭
  2. @Id
    • 해당 테이블의 PK 필드
  3. @GeneratedValue
    • PK의 생성 규칙
    • GenerationType.IDENTITY 옵션 추가 시 auto_increment
  4. @Column
    • 기본값 외에 추가로 변경이 필요한 옵션이 있을 시 사용
    • Nullable, 문자열 사이즈, 타입 등

Repostory 생성

  • 보통 ibatis나 MyBatis 등에서 Dao라고 불리는 DB Layer 접근자
    -> JPA에서는 Repository라고 부르며 인터페이스로 생성
    -> JapRepository<Entity 클래스, PK 타입>를 상속하면 기본적인 CRUD 메소드가 자동 생성
    -> @Repository 추가 할 필요없음
    -> Entity 클래스와 기본 Entity Repository는 함께 위치 - .../domain/user

0개의 댓글