Spring Data JPA - 설정 & 기본적인 사용법

몽루문·2023년 2월 8일
2

Spring Data JPA

목록 보기
1/7
post-thumbnail

📝 Spring Data JPA를 설정해보자

Spring Framework + Maven + Mybatis를 사용하면서 Java와 SQL의 동시 사용은
개발기간에서 능률이 떨어지므로 빠르고 간결하게 Data를 다루고자 JPA를 도입해보려고 한다.
개발환경은 Spring Framework + Spring Boot + Maven 환경이다.




📝 JPA ( Java Persistance API )

■ 정의

자바 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스


■ ORM ( Object - Relational Mapping )

우리가 일반적으로 Class와 RDB(Relational DataBase)의 테이블을 매핑한다는 정의이며,
기술적으로는 Object를 RDB 테이블에 자동으로 영속화 해주는 것




🔧 설정


■ pom.xml

1. Spring Data JPA Dependency 추가

2. JDBC Dependency 추가

  • 현재 MariaDB 사용중이므로 MariaDB Dependecy를 추가하였다.


■ entity 생성

1. domain Package 생성

2. Template Entity 생성

  • 임시로 Template Table과 매핑되도록 Template Class를 생성하였다.
    • @Entity 어노테이션을 이용하여 Entity Class임을 명시한다.
    • @NoArgsConstructor 어노테이션은 access 옵션을 Protected로 설정하여 Entity Manager 외에는 생성이 불가능하도록 설정하여 불변성을 높인다.
    • Entity 는 불변성을 유지하기 위해서 Lombok의 @Setter 어노테이션 사용은 지양해야하며, @Builder 어노테이션을 사용해야한다.


■ repository 생성

1. repository Package 생성

2. TemplateRepository Interface 생성

  • Template Entity를 사용하는 TemplateRepository Interface를 생성하였다.
  • Spring-data-jpa에서 제공하는 JpaRepository Interface를 상속받도록 설정하고
    Template Entity와 PK의 자료형을 명시하여 Spring-Data-Jpa가 제공하는 기능들을 사용할 수 있도록 한다.


■ Entity, Repository Scan 설정

1. BootApplication Class에서 Scan Annotation 설정




✏️ 사용법

  • Service Class에서 TemplateRepository 선언
  • Service Class의 @RequiredArgsConstructor 어노테이션을 이용하여 Repository Interface를 주입받는다.

  • Spring-Data-Jpa에서 제공하는 findById() Method 사용
    • Optional Class는 Present() Method를 이용하여 데이터를 검증할 수 있는 Class이다.




📌 마무리

여기까지 Spring Framework + Spring Boot + Maven 환경에서 JPA를 설정하는 방법을 정리했다. 순수 JPA는 아니고 Spring-Data-Jpa를 설정하는 방법이지만 Spring의 환경에서 사용하는 JPA는 통상적으로 Spring-Data-Jpa를 의미하므로 큰 의미가 달라지진 않는거 같다. JPA를 사용함으로써 이제 SQL에 대해 벗어난것만 해도 큰 의미가 있으며, ( 물론 완전히 벗어날 순 없지만 ) 이제 Database의 Table을 Object로서 바라보게 관점이 변한 것이 가장 큰 장점인거 같다. 하지만 벗어난 만큼 기본적인 작업 및 설정들이 추가되고 개발을 진행함에 있어서 더 빡빡해진거 같다.

profile
알고 있는 것을 정리하고, 새로운 것을 알기위해 끄적이는곳..

1개의 댓글

comment-user-thumbnail
2023년 2월 9일

JPA 잘배우고 갑니다~ ^^

답글 달기